[C++]斐波那契数列

斐波那契数列

斐波那契数列(意大利语:Successione di Fibonacci),又译为菲波拿契数列、菲波那西数列、斐波那契数列、黄金分割数列。

在数学上,斐波那契数列是以递归的方法来定义:

  • F0 = 0
  • F1 = 1
  • Fn = Fn-1 + Fn-2

用文字来说,就是费波那契数列由0和1开始,之后的费波那契系数就是由之前的两数相加而得出。首几个费波那契系数是:

0, 1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89, 144, 233……(OEIS中的数列A000045)

特别指出:0不是第一项,而是第零项。

程序代码

1. 递归实现

//一般递归实现方式
#include <iostream>
using namespace std;
inline int f(const int radix) {
	if (radix == 1 || radix == 2) return 1;
	else return f(radix - 1) + f(radix - 2);
};
int main(int argc, char *argv[]) {
	int n; cin >> n;
	cout << f(n) << endl; 
	return 0;
};
//记忆化搜索优化后的递归实现方式
#include <iostream>
#include <cstring>
using namespace std;
const int MAX_SIZE = 1111;
int h[MAX_SIZE] = {};
inline int f(const int radix) {
	if (radix == 1 || radix == 2) return h[radix] = 1;
	if (h[radix]!= -1) return h[radix];
	else return h[radix] = f(radix - 1) +  f(radix - 2);
}; 
int main(int argc, char *argv[]) {
	memset(h, -1, sizeof h);
	int n; cin >> n;
	cout << f(n) << endl; 
	return 0;	
};

2. 递推实现

//一般递推实现方式
#include <iostream>
using namespace std;
const int MAX_SIZE = 1111;
int f[MAX_SIZE] = {0, 1, 1};
int main(int argc, char *argv[]) {
	for (int i = 3; i <= 1110; ++i)
		f[i] = f[i - 1] + f[i - 2];
	int n; cin >> n;
	cout << f[n] << endl;
	return 0;
};

引用

wikipedia

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值