c语音之递归问题

来源:百度知道 编辑:UC知道 时间:2024/05/06 16:43:33
age(int n)
{int c;
if (n==1) c=10;
else c=age(n-1)+2;
return(c);
}
main()
{printf("%d",age(5));
}
为什么那个n没有自加到,为何会调用到age4 age3 等呢?
流程是怎样的,说一下了!

我这个好懂age(5)=age(4)+2=age(3)+2+2=age(2)+2+2+2=age(1)+2+2+2+2

由于age(1)=10
故age(5)=18

这就是一个递归程序。不停的对自身进行调用,直到调用到age(1)为止。

n=1时,age函数返回10;n=2时,该函数返回12;n=3时,该函数返回14;n=4时,该函数返回16;n=5时,函数返回最终结果18。明白了吗?孩子

给你讲讲递归的步骤吧:

首先age(5),因为5!=1,所以执行else那一步;
这时要算age(n-1),因为n=5,所以即是算age(4)...
如此继续下去,直到算到age(1)时,C=10,递归结束,开始返回。