为了账号安全,请及时绑定邮箱和手机立即绑定

麻烦帮忙解释如下程序内容

麻烦帮忙解释如下程序内容

C++
胡说叔叔 2023-02-11 18:14:23
#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);for(int i=2;n>i;i++){b=c[i]+c[i-1];c.push_back(b);}return c[n];}int main (){int n;while(cin>>n){cout<<fib(n)<<endl;c.clear();}}
查看完整描述

2 回答

?
慕侠2389804

TA贡献1719条经验 获得超6个赞

#include<iostream>
#include<vector>//使用vector需要引用头文件 
using namespace std;
vector<int>c;//c是一个vector容量,装的是int 
int a=1;int b;
int fib(int n)
{
c.push_back(a); //给c装入三个1,事实上数列头三个数应该是0,1,1,第一个数应该是0 
c.push_back(a);
c.push_back(a);
for(int i=2;n>i;i++)
{
b=c[i]+c[i-1];//使用下标方式访问c向量,计算后一个斐波那契数列中的数 
c.push_back(b);//把计算出来的数推入c向量 
}
return c[n];//返回结果是数列第n项 
}
int main ()
{
int n;
while(cin>>n)//每次输入n,以文件结束符^z为结束 
{
cout<<fib(n)<<endl;//输出斐波那契数列的第n项 
c.clear();//每次清空c向量,重新计算(事实上如果不清空的话设计得好可以节约计算时间) 
}
}

查看完整回答
反对 回复 2023-02-15
?
慕容森

TA贡献1853条经验 获得超18个赞

#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);//像容器中连续插入3个1.    for(int i=2;n>i;i++)//for 循环,如果n>i 循环继续,并且i逐次+1    {        b=c[i]+c[i-1];//b的值为第i个元素和i+1个元素之和 ,根据规律来说,   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个数比如n的值为3,返回的是c[3]但是实际是第四个数,应该是2}int main (){    int n;      //定义n int 类型。。    while(cin>>n)  //输入n    {    cout<<fib(n)<<endl; //输出函数fib的返回值。。这边可以转到上面继续~    c.clear();//清空容器c。    }}


查看完整回答
反对 回复 2023-02-15
  • 2 回答
  • 0 关注
  • 129 浏览

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号