鱼C论坛

 找回密码
 立即注册
查看: 2392|回复: 6

小甲鱼c语言递归问题

[复制链接]
发表于 2014-4-6 08:42:15 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
有5个人坐在一起,问第五个人多少岁?他说比第4个人大2岁。问第4个人岁数,他说比第3个人大2岁。问第三个人,又说比第2人大两岁。问第2个人,说比第一个人大两岁。最后问第一个人,他说是10岁。请问第五个人多大?
# include <stdio.h>
void main()
{
int age(int n);
printf("%d\n",age(5));
}

int age(int n) /*求年龄的递归函数*/
{
int c;
if (n==1)
  c=10;
else
  c=age(n-1)+2;
return(c);
}
问题是 开始n的值是5 然后再被调用函数里n不等于1 在c=age(n-1)+2这里是不是又调用age(4)?依次类推
得到n=1 这时c=10 这个值返回到哪? 为什么后面n的值又依次加1 在哪里加的
我也说不太清 不太懂 请高手仔细讲讲 还有递归重点掌握哪里
最好小甲鱼能弄个视频 讲讲递归
谢谢!
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2014-4-6 10:11:00 | 显示全部楼层
age(5)=age(4)+2
          =age(3)+2 +2
          = age(2)+2 + 2
          = age(1) + 2 + 2 + 2
          = 10 + 2  + 2 + 2
就是一直用a(n)=a(n-1)替换
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2014-4-6 11:16:58 | 显示全部楼层
五写写太累我就说三吧
age(3)
进去由于n!=1
执行c = age(n - 1) + 2
当然就要执行 age(n - 1) + 2 也就是 age(2) + 2
由于n 还是 != 1
age(2) 就相当于是 age (1) + 2
但原先是 age(2) + 2
所以就是 age (1) + 2 + 2
接着执行age(1)
应为 = 1了
所以直接就是返回 10
所以就是 10 + 2 + 2
PS : 10 是age(1)的返回值
10+2是age(2)的返回值
10 + 2 + 2是age(3)的返回值
递归就是不断地调用自己直到退出条件成立在一层一层的退出

点评

卧槽 坑啊 本来懂的 经过你这段 “解释”之后我又郁闷了 其实 你直接对楼主说。“下个断点 自己了解更好! 有点抽象 自己理解很好。”  详情 回复 发表于 2014-8-5 23:26
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2014-8-5 23:26:47 | 显示全部楼层
牡丹花下死做鬼 发表于 2014-4-6 11:16
五写写太累我就说三吧
age(3)
进去由于n!=1

卧槽 坑啊 本来懂的 经过你这段 “解释”之后我又郁闷了 其实 你直接对楼主说。“下个断点 自己了解更好! 有点抽象 自己理解很好。”
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2014-8-6 01:47:14 From FishC Mobile | 显示全部楼层
Angel丶L 发表于 2014-8-5 23:26
卧槽 坑啊 本来懂的 经过你这段 “解释”之后我又郁闷了 其实 你直接对楼主说。“下个断点 自己了解更好 ...

单步调试更拉风

点评

呵呵 哥们还没睡啊。。和我一样是夜猫子。  详情 回复 发表于 2014-8-6 01:59
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2014-8-6 01:59:00 | 显示全部楼层

呵呵 哥们还没睡啊。。和我一样是夜猫子。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2014-8-6 03:28:27 From FishC Mobile | 显示全部楼层
Angel丶L 发表于 2014-8-6 01:59
呵呵 哥们还没睡啊。。和我一样是夜猫子。

你确定比我还夜猫子
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-11-24 20:08

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表