1void
#include "stdio.h"
void abc(int n)
{
printf("%d\n", n);
if (n > 0)
{
abc(n - 1);
printf("%d\n",n);\\从这个地方开始就是abc下面
}
}
int main()
{
abc(2);
system("pause");
return 0;
}
对于这个递归第一次n=2,输出2,然后调用abc输出2-1,即输出1,然后继续abc,输出0,然而此时0已经不再大于0,原路返回回到输出为0的地方,往abc下面执行,n-1=0,即n=1;继续回到n=2,printf(2),结束abc的调用
总输出结果为
2
1
0
1
2
2,int
#include <stdio.h>
#include <stdlib.h>
int fun(int n)
{
if(n==1)
return 1;
else
return n*fun(n-1);
}
int main()
{
printf("%d",fun(3));
system("pause");
return 0;
}
这个函数求阶乘,比如你第一个是fun3,过程就是fun3的值为3*fun2,fun2是2*fun1,重点来了n=1,返回1,即fun1=1;那么fun2=2*1;fun3=2*3,找到了3的阶乘值,完毕!
归纳一下递归就好像一个东西从n一直递归到一个特定值x,然后用一个语句返回这个特定值的值,然后依次从这个特定值一直返回x+1,x+2......n