斐波那契数列指的是这样一个数列 1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89, 144, 233,377,610,987,1597,2584,4181,6765,10946,17711,28657,46368........ 这个数列从第3项开始,每一项都等于前两项之和。
一:用循环(迭代)法
int Fib(int n) //循环方法{int a = 1;int b = 1;int c = 1;while (n > 2) //当n<=2时不执行 函数返回1;{c = a + b; a = b; b = c; n--;}return c;}int main(){int n = 0;scanf("%d",&n); //键盘输入想查找的第几位数int x = Fib(n);printf("%d\n", x); //输出return 0;}
二:递归方法
Fib1(int n) //递归方法{if (n <= 2){return 1;}else{return(Fib1(n - 1) + Fib1(n - 2));}}int main(){int n = 0;scanf("%d",&n); //键盘输入想查找的第几位数int y = Fib1(n);printf("%d\n", y);return 0;}
用两种方法运行比较,可以发现当输入n较大,会发现用第二种方法--运行效率太低 重复大量计算
第一种效率高