递归:缩小问题规模,会出现边界条件,通过返回段回去。
递归也就是自己调用自己。
例子:
Age(5):第5个人的年龄 Age(4):第4个人的年龄 Age(3):第3个人的年龄
Age(2):第2个人的年龄 Age(1):第1个人的年龄 Age(n):第n个人的年龄 Ag
Age(n-1):第n-1个人的年龄 给出第1个人的年龄为10
代码如下:
#include<stdio.h>
int Age(int n)
{
int tmp;
if(n==1)
tmp=10;
else
tmp=Age(n-1)+2;
return tmp;
}
int main()
{
for(int i=1;i<6;i++)
{
printf("第%d个人的年龄为%d\n",i,Age(i));
}
return 0;
}
下图为代码得出的结果(如下图)
首先代码中入栈的方式如下图,先为n=5先入栈,然后4再入,然后3 2 1 依次入栈。(如下图)
那按照入栈方式来说我们可能会想它明明是n=5先入的栈,它又怎么显示结果的时候显示的是第一个人到第5个人的年龄呢?它是怎么实现转成按第一个人到第5个人的顺序输出结果的呢?