函数的递归调用:自身调用其自身
注意:只能直接调用,不能间接调用(F1调用F2,F2又调用F1)
循环体都可以写成递归形式
下面是斐波那契数列(兔子数列)用函数递归调用的例子
无递归调用代码:
#include<stdio.h>
int fib(int n)
{
int i;
int fn1=1,fn2=1,fn3;
for(i=3;i<=n;i++)
{
fn3=fn1+fn2;
fn1=fn2;
fn2=fn3;
}
return fn3;
}
int main()
{
int n;
scanf("%d",&n);
printf("The %dth number in fibonacci is %d",n,fib(n));
return 0;
}
使用函数递归调用代码:
#include<stdio.h>
int fib(int n)
{
int fn;
if(n==0)
{
fn=0;
}
else if(n==1)
{
fn=1;
}
else
{
fn=fib(n-1)+fib(n-2);//核心
}
return fn;
}
int main()
{
int n;
scanf("%d",&n);
printf("The %dth number in fibonacci is %d",n,fib(n));
return 0;
}
下面是求阶乘用函数递归调用的例子:
#include<stdio.h>
int fac(int n)
{
int f;
if(n==0)
{
return 1;
}
else
{
return f=fac(n-1)*n;//递归函数调用
}
}
int main()
{
int n;
scanf("%d",&n);
printf("The %dth number in factorial is %d",n,fac(n));
return 0;
}