大家给我讲解下这个递归调用的程序啊,它到底是怎么调用的呢

大家给我讲解下这个递归调用的程序啊,它到底是怎么调用的呢,第1张

从main()里的fun(a)开始分析:

此时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)是告诉你通项公式。那么,你就可以知道任何一项。你这样理解就差不多了,具体机器是怎么 *** 作的,那很复杂宏渣的,也不需要明白!!!!


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/12509899.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-26
下一篇 2023-05-26

发表评论

登录后才能评论

评论列表(0条)

保存