鱼C论坛

 找回密码
 立即注册
查看: 453|回复: 7

求各位大佬解释一下代码

[复制链接]
发表于 2020-3-24 17:51:21 | 显示全部楼层 |阅读模式

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

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

x
#include <Stdio.h>

age(n)
int n;
{
        int c;
        if(n==1)
        {
                c=10;
        }
        else
        {
                c=age(n-1)+2;
        }

        return(c);
}
int main()
{
        printf("%d",age(5));
}



怎么就等于18了呢?,有颜色那部分看不懂,跪求大佬们解答。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2020-3-24 19:16:24 | 显示全部楼层
递归就是函数自己调用自己 另外 所有函数展开,并不销毁 从最后一个函数 得到值后 然后再把前面的函数再一个个销毁
所以递归用不好很占内存的
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 1 反对 0

使用道具 举报

发表于 2020-3-24 17:58:49 | 显示全部楼层
这是个递归,分层次来看:
第一次:n = 4,c为age(4)+2
第二次:n = 3,c为age(3)+4
第三次:n = 2,c为age(2)+6
第四次:这时n = 1,所以c=10
加起来:
10 + 2 + 6就是18啦(只是猜测,有错误请指正)
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-3-24 19:00:19 | 显示全部楼层
这个是递归
age[5]  判断 5 != 1;
c = age(5-1)+2;这时候n = 5-1 等于4
4 != 1;
c = age(4-1)+2+2;
3 !=1
c = age(3-1)+2+2+2  
2 != 1
c = age(2-1)+2+2+2+2
1 == 1
c = 10+2+2+2+2  
不知道你明白了没有
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-3-24 22:36:23 | 显示全部楼层
琴长不过时光 发表于 2020-3-24 19:00
这个是递归
age[5]  判断 5 != 1;
c = age(5-1)+2;这时候n = 5-1 等于4

为什么是以2递增呢?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-3-24 22:42:33 | 显示全部楼层
琴长不过时光 发表于 2020-3-24 19:16
递归就是函数自己调用自己 另外 所有函数展开,并不销毁 从最后一个函数 得到值后 然后再把前面的函数再一 ...

懂啦,谢谢你。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-3-24 22:43:41 | 显示全部楼层
qiuyouzhi 发表于 2020-3-24 17:58
这是个递归,分层次来看:
第一次:n = 4,c为age(4)+2
第二次:n = 3,c为age(3)+4

懂了,谢谢你!
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-3-25 15:36:36 | 显示全部楼层
懂了 不给个最佳答案吗
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-6-10 18:55

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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