定义
无穷数列1,1,2,3,5,8,13,21,34,55,,,,,,,称为斐波拉契数列。
将其递归定义如下图所示:
将其非递归定义如下所示:
实现
采用递归方式代码如下:
#include <stdio.h>
int fibonacci(int n) {
if(n <= 1) return 1;
return fibonacci(n - 1) + fibonacci(n - 2);
}
int main() {
int n;
while(scanf("%d",&n) == 1) {
printf("%d\n",fibonacci(n));
}
return 0;
}
采用非递归方式代码如下:
#include <stdio.h>
int fibonacci(int n){
int fibn_1 = 1, fibn_2 = 1, fibn; //fibn_1表示 fibonacci(n-1), fibn_2表示 fibonacci(n-2)
if(n <= 1) return 1;
for(int i = 2; i <= n; i++) {
fibn = fibn_1 + fibn_2;
fibn_1 = fibn_2; //更新 fibn_1
fibn_2 = fibn; //更新 fibn_2
}
return fibn;
}
int main() {
int n;
while(scanf("%d",&n) == 1) {
printf("%d\n",fibonacci(n));
}
return 0;
}
如有不当,欢迎指出!!!!!