递归和迭代求斐波那契

斐波那契数列,又称黄金分割数列,指的是这样一个数列: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;
}


阅读更多
个人分类: 程序
想对作者说点什么? 我来说一句

没有更多推荐了,返回首页

关闭
关闭
关闭