Fibonacci数列的组成规律为:0 1 1 2 3 5 8 13 21 编写程序,求Fibonacci数列第1项的值(0<is 40)。
#include <stdio.h>
int fibonacci(int n) {
if (n == 0) return 0;
if (n == 1) return 1;
return fibonacci(n - 1) + fibonacci(n - 2);
}
int main() {
int i;
printf("请输入i的值(0<i<40):");
scanf("%d", &i);
printf("第%d项的值为:%d\n", i, fibonacci(i));
return 0;
}
#include <stdio.h>
int main()
{
int a1 = 0,a2= 1,an,n;
scanf("%d",&n);
if(n==1)
printf("0");
else if(n==2)
printf("1");
else
{
for(int i=3;i<=n)
{
an = a1 + a2;
a1 = a2;
a2 = an;
}
printf("%d",an);
}
}
#include <stdio.h>
int main() {
int n = 1;
scanf("%d",&n);
int a = 0, b = 1, c;
for (int i = 2; i <= n; i++) {
c = a + b;
a = b;
b = c;
}
printf("Fibonacci数列第%d项的值为:%d\n", n, a);
return 0;
}
编程求Fibonacci数列的前40项,该数列的生成方法为f(1)=1,f(2)=1,f(n)=f(n-1)+f(n-2)(n>2)。
#include<stdio.h>
void main(){
int f1,f2,f3,n,i;f1=1;f2=1;
printf("%d\t%d\t",f1,f2);
n=2;
for(i=3;i<=40;i++)
{
f3=f1+f2;
printf("%d\t",f3);
n++;
if(n%5==0)
printf("\n");
f1=f2;
f2=f3;
}
}
参考答案:
#include <stdio.h>
int main()
{
int f1 = 0;
int f2 = 1;
int n = 40; // 求斐波那契数列第n项,范围0-40
int result;
if (n == 0) // n=0时单独处理
{
result = f1;
}
else if (n == 1) // n=1时单独处理
{
result = f2;
}
else // 使用循环计算斐波那契数列第n项
{
for (int i = 2; i <= n; i++)
{
result = f1 + f2; // 计算下一项
f1 = f2; // 更新f1和f2的值,以便计算下一项
f2 = result;
}
}
printf("斐波那契数列第%d项的值为:%d\n", n, result);
return 0;
}
解释:
0、1是斐波那契数列的前两项,从第三项起,每一项均等于前两项之和。因此,我们从第2项开始用循环计算第n项的值。
程序先定义了f1和f2两个变量,分别初始化为0和1,用来计算第n项的值。
然后程序根据n的值进行分类讨论:
如果n为0,那么直接输出f1即可。
如果n大于1,则进入else分支,通过for循环计算斐波那契数列第n项的值。循环变量i从2开始遍历,每次计算下一项的值并更新f1和f2的值,以便计算下一项的值。
最后使用printf输出结果。
输出结果:
斐波那契数列第20项的值为:6765