搜索
首页 电脑/网络 程序设计 C/C++

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

  #include 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; } 我们课本上的,经我略微改动。
  但是具体我也不是很了解。 我看看这个程序,总觉得最后应该输出最后一个字符。 请方家指点。

全部回答

2006-12-07

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

类似问题换一批

热点推荐

热度TOP

相关推荐
加载中...

热点搜索 换一换

电脑/网络
C/C++
硬件
电脑装机
程序设计
互联网
操作系统/系统故障
笔记本电脑
反病毒
百度
软件
程序设计
C/C++
VB
数据库
汇编语言
JAVA相关
VC++
C#/.NET
其他编程语言
C/C++
C/C++
举报
举报原因(必选):
取消确定举报