有一道简单的题:
有5个孩子,第一个孩子10岁,第二个孩子比第一个大两岁,以此类推,问第五个孩子多大?
这道题简单计算就可得出答案,
而且这道题可以利用循环很简单的实现:
其代码如下
#include <stdio.h>
int Age()
{
int age=10;
for(int i=1;i<5;i++)
{
age+=2;
}
return age;
}
int main()
{
Age();
printf("%d\n",Age());
return 0;
}
而在递归中,则是利用自己调用自己的方式:
其代码如下
#include <stdio.h>
int Age(int n)
{
int tmp; //存放年龄的变量
if(n == 1)
tmp = 10; //第一个人的年龄
else
tmp=Age(n-1)+2; //调用Age(n-1),循环调用
return tmp;
}
int main()
{
Age(5);
printf("%d\n",Age(5));
return 0;
}
而递归的调用及其入栈流程为:
1.Age(5),入栈,在最低
2.Age(4),入栈,放在Age(5)上面
同理,直到Age(1)
而出栈时则为:
1.从Age(1)开始,一个一个出栈
2.Age(2)出栈
同理,直到Age(5)出栈
整个过程才结束。