C语言递归函数问题

 我来答
茆诗兰光冰
游戏玩家

2019-08-12 · 游戏我都懂点儿,问我就对了
知道大有可为答主
回答量:1.1万
采纳率:27%
帮助的人:664万
展开全部
因为递归要存在一个最低层,这样才会有限,否则没有最低层的话,将会一直运行下去没有止境.
所以加个if
(n<=1)表示他的最低层n的值是1,而根据你代码palin(i),n的最初值是i,也就是5,所以
第一层n的值是5,如果n的值大于1,那么就运行else里面的语句进入下一层palin(n-1)
第二层的时候n的值是上一层中的n-1也就是5-1=4
一直这样下去到n=1的时候运行if里的语句,里面不会再出现palin函数,就到达最底层.
然后运行完,逐层弹出去.
就是这样自己函数再读入自己函数,形成递归.
如果解释不明白
直接call我或者补充问题吧`
海昊英0Gl
2019-11-19 · TA获得超过3万个赞
知道大有可为答主
回答量:1.1万
采纳率:35%
帮助的人:791万
展开全部
好的我帮你你分析以下你的程序:
1
调用是age(5)
它再调用age(4),然后返回age(4)+2
2
age(4)过程中调用age(3),然后返回age(3)+2
3
在age(3)过程中调用age(2),然后返回age(2)+2
4
在age(2)过程中调用age(1),然后返回age(1)+2
5
在age(1)过程中,直接返回10的值。
由上过程可以看出递归深度是5,
那么:age(5)=age(4)+2
age(4)=age(3)+2
age(3)=age(2)+2
age(2)=age(1)+2
age(1)=10
所以
age(5)=18
这仅仅是一个单向递归,深度是单向延伸的。还有向广度延伸的
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
华永怡孝寰
2019-03-15 · TA获得超过3万个赞
知道大有可为答主
回答量:1.1万
采纳率:31%
帮助的人:547万
展开全部
仔细分析下你的程序:
一次调用age(n),实参n=5!=1,所以c在第一次调用时是随机值,age(5)=c=age(4)+2
二次调用age(n),实参n=4!=1,age(4)=c=c+2;
三次调用age(n),实参n=3!=1,age(3)=c=c+2;
四次调用age(n),实参n=2!=1,age(2)=c=c+2;
五次调用age(n),实参n=1,age(1)=c=c+2;此时的c实际上已经等于一次调用时的c值+8;而c此时被赋值为10,所以age(5)=18;
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式