感觉有点小问题,不过具体的实现没有问题。 具体思路: n=1 a[0]=0 n=2 a[1]=1 n=3 a[0]=a[0]+a[1] n=4 a[1]=a[0]+a[1] … 后面的算式一直都是a[0]+a[1],所以只分奇偶,和第几组(两两一组)就行了。
#include <stdio.h> //斐波那契数列: // 0 1 1 2 3 5 8 13 ... int feibona(int x); int main() { int n,num; printf("please input a int number: "); scanf_s("%d",&n); num = feibona(n+1);//这里一开始输入n,会输出前一位,后来懒得改直接+1让它输出正确的 printf("/n feibonaci is : %d .",num); return 0; } int feibona(int x) { static int a[2] = {0,1}; int i=0; if (x < 1) return NULL; else if (x == 1) return a[0]; else if (x == 2) return a[1]; if (x % 2) i = x / 2 - 1; else i = x / 2; while (i > 0) { a[0] = a[0] + a[1]; a[1] = a[0] + a[1]; i--; } if (x % 2) return a[1]; else return a[0]; }运行结果: