一组数字1,1,2,3,5,8,13....都是前两位数字相加等于第三位数
题目要求输出斐波那契前40个数字
#include<stdio.h>
int main()
{
int arr[40]={1,1};
printf("1 1");//输出已经知道的前2个数,注意1和1之前有空格
int i;
for(i=2;i<40;i++)//i是下标,下标从2开始
{
arr[i]=arr[i-1]+arr[i-2];//前2个数相加等于第三位数
printf("%d ",arr[i]);
}
return 0;
}
如果题目要求输出第10项的话
#include<stdio.h>
int main()
{
int arr[40]={1,1};
printf("1 1");
int i;
for(i=2;i<10;i++)//i为10退出循环
{
arr[i]=arr[i-1]+arr[i-2];
printf("%d ",arr[i]);
}
printf("\n%d",arr[i-1]);//因为第10项的下标为9,退出循环时i是10所以要减一
return 0;
}
递归法,题目要求求出第10项
#include<stdio.h>
int f(int n)
{
if(n==0) //如果求输出第0项就是直接返回0
return 0;
if(n==1) //如果求输出第0项就是直接返回0
return 1;
return f(n-1)+f(n-2);
}
int main()
{
int arr[10]={0,1};
printf("%d",f(10));
return 0;
}
//循环法
#include<stdio.h>
int main()
{
int f1,f2,f,n,i;
f1 = 1,f2 = 1;f;
printf("请输入要求的项数");
scanf("%d",&n);
for(i=3;i<=n;i++)
{
f = f1+f2;
f1 = f2;
f2 = f;
}
printf("%d项值为%d",n,f);
}
斐波那契数列
于 2023-05-27 19:59:26 首次发布