用c++语言编程输出Fibonacci数列的前40个数

如题所述

按Fibonacci数列规则,它的第一项是0,第二项是1。从第三项开始,当前项是前两项之和,即数列结构是:0,1,1,2,3,5,8...。可以自定义一个函数求各项之值(为提高时效,不用递归),代码如下:

//#include "stdafx.h"//If the vc++6.0, with this line.
#include <iostream>
using namespace std;
int myfib(int n){
if(n==1 || n==0)
return n;
for(int a=0,b=1,i=1;i<n;b+=a,a=b-a,i++);
return b;
}
int main(int argc,char *argv[]){
for(int t=0,i=0;i<40;i++){
cout.width(8);
cout << myfib(i) << (++t%10 ? ' ' : '\n');
}
return 0;
}

运行结果如下:

温馨提示:答案为网友推荐,仅供参考
第1个回答  推荐于2017-06-14

C++程序:

#include <iostream>

using namespace std;

int main()
{
long f1=1, f2=1;
int i=3;

cout<<"1\t"<<f1<<endl;
cout<<"2\t"<<f2<<endl;

for(i=3; i<=40; i++)
{
f2 += f1;
f1 = f2 - f1;
cout<<i<<"\t"<<f2<<endl;
}

return 0;
}


运行结果:

本回答被网友采纳
第2个回答  2019-11-15

//#include "stdafx.h"//If the vc++6.0, with this line.

#include <iostream>

using namespace std;

int myfib(int n){

    if(n==1 || n==0)

        return n;

    for(int a=0,b=1,i=1;i<n;b+=a,a=b-a,i++);

    return b;

}

int main(int argc,char *argv[]){

    for(int t=0,i=0;i<40;i++){

        cout.width(8);

        cout << myfib(i) << (++t%10 ? ' ' : '\n');

    }

    return 0;

}

扩展资料:

从第二项开始,每个偶数项的平方都比前后两项之积少1,每个奇数项的平方都比前后两项之积多1。

如:第二项1的平方比它的前一项1和它的后一项2的积2少1,第三项2的平方比它的前一项1和它的后一项3的积3多1。

(注:奇数项和偶数项是指项数的奇偶,而并不是指数列的数字本身的奇偶,比如从数列第二项1开始数,第4项5是奇数,但它是偶数项,如果认为5是奇数项,那就误解题意,怎么都说不通)

证明经计算可得:[f(n)]^2-f(n-1)f(n+1)=(-1)^(n-1)

本回答被网友采纳
第3个回答  2013-03-19
//本程序在VC++6.0环境下运行通过
#include <iostream>
using namespace std;
int main(void){
int a=1,b=1;//设置两个初始值此时a=1,b=1
cout<<a<<ends<<b<<ends;//输出初始值
for (int i=2;i<40;i++){//循环计算输出第3-40个数
b=b+a;//计算前两位之和放在b中第一轮a=1,b=2第二轮a=1,b=3
cout<<b<<ends;//输出计算后b的数
a=b-a;//用b-a就是计算之前b的数,放入a中,第一轮a=1,b=2 第二轮a=2,b=3 以此类推
}
return 0;
}本回答被网友采纳
第4个回答  2013-03-19
#include<stdio.h>
main()
{
int i,f1=1,f2=1,fib[40];
fib[0]=f1;
fib[1]=f2;
for(i=2;i<40;i++)
{
fib[i]=f1+f2;
f1=f2;
f2=fib[i];
}
for(i=0;i<40;i++)
{
printf("%d\t",fib[i]);
}
}
希望能帮到你。
相似回答