2 回答

TA貢獻(xiàn)1719條經(jīng)驗(yàn) 獲得超6個(gè)贊
#include<iostream>
#include<vector>//使用vector需要引用頭文件
using namespace std;
vector<int>c;//c是一個(gè)vector容量,裝的是int
int a=1;int b;
int fib(int n)
{
c.push_back(a); //給c裝入三個(gè)1,事實(shí)上數(shù)列頭三個(gè)數(shù)應(yīng)該是0,1,1,第一個(gè)數(shù)應(yīng)該是0
c.push_back(a);
c.push_back(a);
for(int i=2;n>i;i++)
{
b=c[i]+c[i-1];//使用下標(biāo)方式訪問(wèn)c向量,計(jì)算后一個(gè)斐波那契數(shù)列中的數(shù)
c.push_back(b);//把計(jì)算出來(lái)的數(shù)推入c向量
}
return c[n];//返回結(jié)果是數(shù)列第n項(xiàng)
}
int main ()
{
int n;
while(cin>>n)//每次輸入n,以文件結(jié)束符^z為結(jié)束
{
cout<<fib(n)<<endl;//輸出斐波那契數(shù)列的第n項(xiàng)
c.clear();//每次清空c向量,重新計(jì)算(事實(shí)上如果不清空的話(huà)設(shè)計(jì)得好可以節(jié)約計(jì)算時(shí)間)
}
}

TA貢獻(xiàn)1853條經(jīng)驗(yàn) 獲得超18個(gè)贊
#include<iostream>#include<vector>using namespace std;vector<int>c;int a=1;int b;int fib(int n){ c.push_back(a); c.push_back(a); c.push_back(a);//像容器中連續(xù)插入3個(gè)1. for(int i=2;n>i;i++)//for 循環(huán),如果n>i 循環(huán)繼續(xù),并且i逐次+1 { b=c[i]+c[i-1];//b的值為第i個(gè)元素和i+1個(gè)元素之和 ,根據(jù)規(guī)律來(lái)說(shuō), c[0],c[1],c[2]都為1,c[3]=2,c[4]=3,c[5]=5,c[6]=8,后者等于前2者之和。 c.push_back(b);//插入b } return c[n];//返回的值為第n+1個(gè)數(shù)比如n的值為3,返回的是c[3]但是實(shí)際是第四個(gè)數(shù),應(yīng)該是2}int main (){ int n; //定義n int 類(lèi)型。。 while(cin>>n) //輸入n { cout<<fib(n)<<endl; //輸出函數(shù)fib的返回值。。這邊可以轉(zhuǎn)到上面繼續(xù)~ c.clear();//清空容器c。 }}
- 2 回答
- 0 關(guān)注
- 94 瀏覽
添加回答
舉報(bào)