求各位大佬解释一下代码
#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了呢?,有颜色那部分看不懂,跪求大佬们解答。 递归就是函数自己调用自己 另外 所有函数展开,并不销毁 从最后一个函数 得到值后 然后再把前面的函数再一个个销毁
所以递归用不好很占内存的 这是个递归,分层次来看:
第一次: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啦(只是猜测,有错误请指正) 这个是递归
age判断 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
不知道你明白了没有 琴长不过时光 发表于 2020-3-24 19:00
这个是递归
age判断 5 != 1;
c = age(5-1)+2;这时候n = 5-1 等于4
为什么是以2递增呢? 琴长不过时光 发表于 2020-3-24 19:16
递归就是函数自己调用自己 另外 所有函数展开,并不销毁 从最后一个函数 得到值后 然后再把前面的函数再一 ...
懂啦,谢谢你。 qiuyouzhi 发表于 2020-3-24 17:58
这是个递归,分层次来看:
第一次:n = 4,c为age(4)+2
第二次:n = 3,c为age(3)+4
懂了,谢谢你! {:5_103:}懂了 不给个最佳答案吗
页:
[1]