斐波那契数列,又称黄金分割数列,指的是这样一个数列:0、1、1、2、3、5、8、13、21、34、……在数学上,斐波纳契数列以如下被以递归的方法定义:F(0)=0,F(1)=1,F(n)=F(n-1)+F(n-2)(n≥2,n∈N*)
递归的效率比较低,递归会不断的建立和调用函数的副本,会消耗时间和内存
迭代相对递归来说更节省资源
以下代码:
#include<stdio.h>
#include<stdlib.h>
void Fib(int*a) {
a[0] = 0;
a[1] = 1;
for (int i = 2; i < 100; i++) {
a[i] = a[i - 1] + a[i - 2];
}
}
int Fib2(int n) {
if (n < 2) return n > 0 ? 1 : 0;
return Fib2(n - 1) + Fib2(n - 2);
//return n + Fib(n - 1); //递归求n!
}
int main() {
int a[100];
Fib(a);//用迭代法让斐波那契填充数组
int n = 5;
int p = Fib2(5);//用递归的方法求第n个斐波那契
return 0;
}