一.非递归

<1>数组

#include<stdio.h>#include<stdlib.h>int main(){ int a[10000] = { 0 };//利用数组求不了较大位置的斐波那契数 int i,m; a[0] = 1; a[1] = 1; printf("请输入要求第几个斐波那契数(大于等于2)\n"); scanf("%d", &m); for (i = 2; i <=m; i++) { a[i] = a[i - 1] + a[i - 2]; } printf("所求的数是%d\n",a[m]); system("pause"); return 0;}

<2> 非数组

#include<stdio.h>#include<stdlib.h>int Fabonaci(int n){ int f1 = 1; int f2 = 1; int f3 = 1; int i = 0; for(i = 3;i <= n;i++) { f3 = f2+f1; f1 = f2; f2 = f3; } return f3;}int main(){ int result,m; printf("请输入要求第几个斐波那契数\n"); scanf("%d", &m); result=Fabonaci(m); printf("所求的数是%d\n",result); system("pause"); return 0;}

二.递归

#include<stdio.h>#include<stdlib.h>int Feibo(int a[],int m){ if (m <=1) { return 1;//递归出口 } return Feibo(a, m - 1) + Feibo(a, m - 2);}int main(){ int a[100] = { 0 }; a[0] = 1; a[1] = 1; int result,m; printf("请输入要查找哪个斐波那契数\n"); scanf("%d", &m); result = Feibo(a,--m); printf("所查找的数是%d\n",result); system("pause"); return 0;}