求fibonacci数列第n项的值
fibonacci数列,0,1,1,2,3,5,8,13,……满足前两项之和等于第三项,则
f1 = 0,
f2 = 1,
f3 = f(n-2)+ f(n-1);
程序如下;
#include <stdio.h>
int f(int a) //函数f的定义
{
int i;
if( a==1 ){
return 0;
}
if( a== 2 ){
return 1;
}
else if(a >= 3){
for(i = 1 ; i < a ;i++){
return (f(a-1) + f(a-2)); //函数f的递归调用,
}
}
}
void main()
{
int n;
printf("input a number:\n");
scanf("%d",&n);
printf("%d\n",f(n)); //函数f的调用
}
运行结果:
如果输入3,则打印出来数列第三项的值为 1,(以此类推)
如果要打印出来fibonacci数列则需将代码变成
#include <stdio.h>
int f(int a) //函数f的定义
{
if( a==1 ){
return 0;
}
if( a== 2 ){
return 1;
}
else if(a >= 3){
return (f(a-1) + f(a-2)); //函数f的递归调用,
}
}
void main()
{
int i,n;
printf("input a number:\n");
scanf("%d",&n);
for(i = 1 ; i < n ;i++)
{
printf("%-5d",f(i)); //调用函数f
if( i % 4 == 0 )
{
printf("\n");
}
}
}
在这里注意观察两个代码的不一样。