下面代码是怎么依次输出5个人的岁数的,不是只有一个变量c吗?它的值不会被替换吗...
#include<stdio.h>
void main()
{
printf("%d\n",age(5));
}
int age(int n)
{
int c;
if(n<=1)
{
c=10;//第一人10岁
printf("1=%d\n",c);
}
else
{
c=age(n-1)+2;
printf("%d=%d\n",n,c);//依次输出5个人的岁数
}
return c;
}
戚晓栖 发表于 2018-6-14 18:11
函数调用时其实也是一个压栈的过程,一层一层叠加;直到最后一次调用函数age(1),printf输出10;然后之前一 ...
压栈是什么意思啊?能解释下吗?
递归调用了函数本身,每次调用输出了一个年龄 BngThea 发表于 2018-6-14 16:51
递归调用了函数本身,每次调用输出了一个年龄
是先输出printf然后在调用函数,递归函数在上面不是应该先直接递归完吗?
~白. 发表于 2018-6-14 17:08
是先输出printf然后在调用函数,递归函数在上面不是应该先直接递归完吗?
递归的时候逻辑上这样的
进入递归函数,后面的代码暂时挂起,等到返回的时候才接着往下执行 函数调用时其实也是一个压栈的过程,一层一层叠加;直到最后一次调用函数age(1),printf输出10;然后之前一层一层返回。 BngThea 发表于 2018-6-14 17:16
递归的时候逻辑上这样的
进入递归函数,后面的代码暂时挂起,等到返回的时候才接着往下执行
哦哦,谢谢告知 ~白. 发表于 2018-6-14 18:17
压栈是什么意思啊?能解释下吗?
你可以百度一下,上面有详细的解释。一两句话也说不清楚的
~白. 发表于 2018-6-14 18:17
压栈是什么意思啊?能解释下吗?
http://www.nowamagic.net/librarys/veda/detail/2300
你可以看这个演示图 戚晓栖 发表于 2018-6-14 19:54
你可以百度一下,上面有详细的解释。一两句话也说不清楚的
好的 戚晓栖 发表于 2018-6-14 19:57
http://www.nowamagic.net/librarys/veda/detail/2300
你可以看这个演示图
谢谢
页:
[1]