递归函数
定义:函数自己调用自己
执行过程分为两个阶段:
1) 递推阶段:从原问题出发,按递推公式从未知到已知,最终到达递归终止条件
2) 回归阶段:按递归的终止条件求出结果,逆向逐步带入递归公式,回到原问题
例:顺序输出一个整数从最高位到最低位
1234
调用函数: 1 2 3 4
1234/1000%10 ---》/10 /10 /10 %10
1234/100%10 ----》/10 /10 %10
1234/10%10
1234%10 ----》 /1 %10
练习:
1.输出结果:
#include <stdio.h>
int fun(int n)
{
if(n == 1)
return 1;
return n*fun(n-1); //5*4*3*2*1
}
int main()
{
printf("%d\n",fun(5));//120
return 0;
}
2、有以下程序,执行后输出结果是()。
#include <stdio.h>
void f(int a[],int i,int j)
{
int t;
if(i<j)
{
t=a[i]; a[i]=a[j];a[j]=t;
f(a,i+1,j-1);
}
}
main( )
{
int i,aa[5]={1,2,3,4,5};
f(aa,0,4);
for(i=0;i<5;i++)
printf("%d,",aa[i]);
printf("\n");
}
A)5,4,3,2,1, B)5,2,3,4,1, C)1,2,3,4,5, D)1,2,3,4,5,
答案:A