前提需备知识:
斐波那契数列是第一项和第二项为1,第三项为前两项之和,然后以此类推的一个数列,即1,1,2,3,5,8,13,21,34,55……
递归法:
#include<stdio.h>
int fbnq(int n)
{if (n == 1 || n == 2) //初始化第一个数和第二个数{return 1;}else{return fbnq(n - 1) + fbnq(n - 2); //斐波那契公式}
}
int main()
{int n = 0, fb = 0;scanf("%d", &n);fb = fbnq(n);printf("%d\n", fb);return 0;
}
非递归法:
#include<stdio.h>
int main()
{int n = 0, i = 0;scanf("%d", &n);if (n == 1 || n == 2) //如果n是第一项和第二项这种特殊项时{printf("1\n"); //打印1return 0; //结束函数}int a = 1, b = 1; //初始化第一项和第二项while (n > 2) //如果是第三项及以上{int c = a + b; //c等于前面两项之和a = b; //b变为新的最前面一项(即原来的a)b = c; //c变为新的前一项(即原来的b)if (n - 1 == 2) //如果这次循环结束后次数为2{printf("%d\n", c); //就不用再循环了(因为前面两项是初始化好了的)}n = n - 1; //减少循环次数1次}return 0;
}