C语言递归函数问题# include void main(){int age(int n);printf("%d\n",

问题描述:

C语言递归函数问题
# include
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);
}
谁能帮我仔细分析一下main程序调用age函数时,c=age(n-1)+2;
return(c);是如何返回age(1)的值,age(2)值,age(3)值,age(4)值的.
1个回答 分类:综合 2014-11-01

问题解答:

我来补答
好的我帮你你分析以下你的程序:
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
这仅仅是一个单向递归,深度是单向延伸的.还有向广度延伸的
 
 
展开全文阅读
剩余:2000
上一页:圆向量