top1编程
← 返回题目
题解

【入门】求1/1+1/2+2/3+3/5+5/8+8/13+13/21……的前n项的和

1 条题解

  • 0
    @ 2026-7-30 1:35:28

    解题思路

    用两个数保存相邻的斐波那契数,每次把当前分数加入答案后更新两个数。

    参考代码

    // 先读入题目给出的输入数据。
    // 用简单的循环完成题目要求。
    #include <iostream>
    #include <iomanip>
    using namespace std;
    
    int main() {
        int n;
        cin >> n;
        int a = 1, b = 1;
        double sum = 0;
        for (int i = 1; i <= n; i++) {
            // 当前一项是前一个数除以后一个数。
            sum += (double)a / b;
            int t = a;
            a = b;
            b = t + b;
        }
        cout << fixed << setprecision(3) << sum << endl;
        return 0;
    }
    

    复杂度分析

    代码只使用了简单变量、数组、循环和判断。时间复杂度根据题目的枚举或扫描过程计算,额外空间主要是输入数组,空间复杂度为 O(n)。

    • 1