C++编写的输出斐波那契数列

本文介绍了如何用C++编写代码来生成指定长度的斐波那契数列,通过循环和动态数组实现计算和输出。

下面是一个使用C++编写的输出斐波那契数列的代码示例:

#include <iostream>
using namespace std;

int main() {
    int length;
    cout << "请输入要生成的斐波那契数列的长度:";
    cin >> length;

    int fibonacci[length];
    fibonacci[0] = 0;
    fibonacci[1] = 1;

    for (int i = 2; i < length; i++) {
        fibonacci[i] = fibonacci[i - 1] + fibonacci[i - 2];
    }

    cout << "斐波那契数列:";
    for (int i = 0; i < length; i++) {
        cout << fibonacci[i] << " ";
    }

    return 0;
}

你可以运行这段代码并输入你想要生成的斐波那契数列的长度,代码将会输出对应长度的斐波那契数列。

C++中,有多种方法可以实现斐波那契数列,以下是几种常见的实现方式: ### 数组实现 ```cpp #include<iostream> using namespace std; int main() { int a[10000]={1},n; cin>>n; for(int i=1;i<=n;i++){ a[i]=a[i-1]+a[i-2]; } for(int i=0;i<n;i++){ cout<<a[i]<<" "; } return 0; } ``` 这种方法使用数组存储斐波那契数列的每一项,通过循环计算每一项的值,最后输出数列 [^1]。 ### 变量实现 ```cpp #include <iostream> using namespace std; void test() { int a = 0; int b = 1; while(b < 1000) { int tmp = a; a = b; b = tmp + b; cout << tmp << ","; } cout << endl; } int main(){ test(); // 如果是在Windows系统下,可使用system("pause");让程序暂停 return 0; } ``` 该方法使用两个变量`a`和`b`来保存数列中的相邻两项,通过循环不断更新这两个变量的值,从而生成斐波那契数列 [^2]。 ### 迭代实现 ```cpp #include <iostream> // 迭代实现 int fibonacciIterative(int n) { if (n <= 0) return 0; if (n == 1) return 1; int a = 0, b = 1, result = 0; for (int i = 2; i <= n; ++i) { result = a + b; a = b; b = result; } return result; } int main() { int n; std::cout << "请输入要计算的斐波那契数列项数n: "; std::cin >> n; std::cout << "迭代方法结果: " << fibonacciIterative(n) << std::endl; return 0; } ``` 迭代实现通过循环来计算斐波那契数,效率较高。它避免了递归实现中的重复计算问题 [^3]。 ### 递归实现 ```cpp #include <iostream> long long fb(int n){ if(n<1){ return 0; } else if(n==1||n==2){ return 1; } return (fb(n-1)+fb(n-2)); } int main(){ int n; long long sum; std::cout << "请输入要计算的斐波那契数列项数n: "; std::cin >> n; sum = fb(n); std::cout << "递归方法结果: " << sum << std::endl; return 0; } ``` 递归实现是根据斐波那契数列的定义,函数自己调用自己来计算数列的值。但递归到一定程度,会发生“栈溢出”,且时间复杂度较高 [^4]。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

diannao720

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值