Lawliet|C语言——求斐波那契函数第N项

    科技2025-05-20  40

    利用函数求解 #include<stdio.h> #include<stdlib.h> int fabonacci(int n) { int f1 = 1; int f2 = 1; int i = 0, f3 = 1; for (i = 3; i <= n; i++) { f3 = f1 + f2; f1 = f2; f2 = f3; } return f3; }//定义斐波那契函数 int main() { int a = 0; scanf("%d", &a);//输入项数 printf("%d\n", fabonacci(a));//调用函数求第N项值 return 0; } 利用循环求解 #include <stdio.h> int main() { int f1=1,f2=1,f3; int i,n; scanf("%d",&n); for(i=1; i<=n-2; i++) { f3=f1+f2; f1=f2; f2=f3; } printf("%12d\n",f3); return 0; } 利用递归求解 #include <stdio.h> int fac(int n) { if(n==1) return 1; else if(n==2) return 2; else { return fac(n-1)+fac(n-2); } } int main() { int n; scanf("%d",&n); printf("%d",fac(n)); return 0; }

    注:由于输出受限,仅支持求解到第48位斐波那契函数。

    斐波那契函数的变形 有以下数列: 1、1、1、3、5、9、17… 除去前三项,其他项均为该数前三项之和。 要求输入第几项然后输出该项的数字大小 (1)利用函数求解 #include<stdio.h> #include<stdlib.h> int fabonacci(int a) { int f1 = 1; int f2 = 1; int f3=1; int i = 0, f4= 1; for (i = 4; i <= a; i++) { f4 = f1 + f2+ f3; f1 = f2; f2 = f3; f3 = f4; } return f4; } int main() { int n = 0; scanf("%d", &n); printf("%d\n", fabonacci(n)); return 0; }

    (2)利用循环求解

    #include <stdio.h> int main() { int f1=1,f2=1,f3=1,f4; int i,n; scanf("%d",&n); for(i=1; i<=n-3; i++) { f4=f1+f2+f3; f1=f2; f2=f3; f3=f4; } printf("%12d\n",f4); return 0; }
    Processed: 0.010, SQL: 8