C递归
1)阶乘
#include<stdio.h>
long fact(int n);
int main()
{
int n;
long result;
printf("Input n:");
scanf("%d",&n);
result=fact(n);
if(result==-1)
printf("n<0,data error!\n");
else
printf("%d!=%ld\n",n,result);
return 0;
}
long fact(int n)
{
if(n<0)
return -1;
else if(n==0|n==1)
return 1;
else
return n*fact(n-1);
}
2)Fibonacci数列
#include<stdio.h>
long fib(int a);
int main()
{
int n,i,x;
printf("Input n:");
scanf("%d",&n);
for(i=1;i<=n;i++)
{
x=fib(i);
printf("fib(%d)=%d\n",i,x);
}
return 0;
}
long fib(int n)
{
long f;
if(n==0) f=0;
else if(n==1)f=1;
else f=fib(n-1)+fib(n-2);
return f;
}
3)Fibonacci数列及递归调用次数
#include<stdio.h>
long fib(int a);
int count=0;
int main()
{
int n,i,x;
printf("Input n:");
scanf("%d",&n);
for(i=1;i<=n;i++)
{
count=0;
x=fib(i);
printf("fib(%d)=%d,count=%d\n",i,x,count);
}
return 0;
}
long fib(int n)
{
long f;
count++;
if(n==0) f=0;
else if(n==1)f=1;
else f=fib(n-1)+fib(n-2);
return f;
}