C语言的递归函数的逆序输出问题~有请方家

[复制链接]
查看11 | 回复0 | 2009-1-30 06:28:38 | 显示全部楼层 |阅读模式
#include <stdio.h>void reverse(char *line){char ch=*line;if(ch){reverse(++line);printf("%c",ch);}}int main(){char line[81];char*ptr;ptr=gets(line);reverse(line);return 0;}我们课本上的,经我略微改动。但是具体我也不是很了解。我看看这个程序,总觉得最后应该输出最后一个字符。请方家指点。

                                                                                                递归,眼看着第一次调reverse函数的时候,里面的printf应该输出第一个字符的,但在输出之前又递归的调用了自己这个函数,所以必须要等里面一次一次递归到最后一个字符,才像后退一样一个一个倒着输出来直到原点。所以第一个输出的是最后一个字符,第一个字符反倒要到最后才能被输出。。就像弹弓一样,拉弹弓的过程好比一次一次递归调用,但每次调用前都要看看是不是已经拉到头了,直到拉到不能在拉的时候,一松手,一口气把结果从最后一个到第一个的顺序输出来。                                       
提问者对答案的评价:
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

主题

0

回帖

4882万

积分

论坛元老

Rank: 8Rank: 8

积分
48824836
热门排行