1.2 菲波那契数

                                 1.2 菲波那契数

1.2 .1 题目内容

  菲波那契(Fibonacci)数(简称菲氏数)定义为:
f(0)=0

f(1)=1 

 f(n)=f(n-1)+f(n-2)      (n>1且n∈整数)
如果写出菲氏数列,则应该是:
0 1 1 2 3 5 8 13 21 34 …
如果求其第 6 项,则应为 8。
求第 n 项菲氏数。
输入描述:输入数据含有不多于 50 个的正整数 n(0≤n≤46)。
输出描述:对于每个 n,计算其第 n 项菲氏数,每个结果应单独占一行。
输入样例 
6 10 
输出样例 

55 

1.2.2 提示

先把第 0 项到第 46 项的菲波那契数求出来,放在一个表(或数组)中,然后,直接查表即可,这样就不会超时。

(1)采用数组来做。
#include <iostream>  
#include <cmath> 
using namespace std; 
int main(int argc, char* argv[]) 
{ 
 int a[47]; 
 a[0]=0;
a[1]=1; 
 //先把前 46 项菲波那契数求出来放在表(或数组)中
 for(int i=2;i<=46;i++) 
 { 
 a[i]=a[i-1]+a[i-2]; 
 } 
 //查表(数组)
 int n; 
 while(cin>>n) 
 { 
 cout<<a[n]<<endl; 
 } 
 return 0; 
} 
(2)采用向量来做。 
#include <iostream> 
#include <vector> 
using namespace std; 
int main(int argc, char* argv[]) 
{ 
 vector<unsigned int>v; 
 unsigned int n; 
 //先建表,把第 0~46 项的菲波那契数都算出来
 v.push_back(0); 
 v.push_back(1); 
 for(int i=2;i<=46;i++) 
 { 
 v.push_back(v[i-1]+v[i-2]); 
 } 
 //直接输出第 n 项菲波那契数(从 0 项开始计算)
 while(cin>>n) 
 { 
 cout<<v[n]<<endl; 
 } 
 return 0; 
} 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值