此时s是 字符掘唯串a 第一个字符的地址.
t = *s++相当于t = *ss++
s++使得s指向字符串a中的下一个字符。
接着递归调用fun(s)
s 每指向一个字符, 就递归调用一次, 即递归调用进行了5次, s 分别指向 '1', '2', '3', '4', '\0'
fun()里的if(*s)相当于if(*s != '\0'), 即第五次调用时不会再继续调用新的fun()了,
而是直接返回上判芹培一个fun().
这时s指向首芹 '4', 即 a[3]
接着依次执行第4, 3, 2, 1个fun()的
if(t!='\0') putchar(t)
因此在屏幕上打印出4321
最后返回到main(),
退出程序.
递归有一个堆栈的概念,那就意味着他是一个反理解的过程:就象数学递推一唯指样,你知指绝配道第一项,第二项,又知道通项公式,那你就可以知道任何一项。然后你看代码:fun(0)==0,fun(1)==1是告诉你一二项。
fun(n)==fun(n-1)+fun(n-2)是告诉你通项公式。那么,你就可以知道任何一项。你这样理解就差不多了,具体机器是怎么 *** 作的,那很复杂宏渣的,也不需要明白!!!!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)