源本科技 | 码上会

分数序列求和

2026/01/26
13
0

题目

有一分数序列:

21, 32, 53, 85, 138, 2113, \frac{2}{1},\ \frac{3}{2},\ \frac{5}{3},\ \frac{8}{5},\ \frac{13}{8},\ \frac{21}{13},\ \dots

求出这个数列的前 20 项之和。

说明

观察该分数序列,可以发现:

  • 分子:2, 3, 5, 8, 13, 21, …

  • 分母:1, 2, 3, 5, 8, 13, …

这实际上是斐波那契数列的相邻两项构成的分数:

设斐波那契数列为F1=1, F2=1, F3=2, F4=3, F5=5, F6=8,  F_1 = 1,\ F_2 = 1,\ F_3 = 2,\ F_4 = 3,\ F_5 = 5,\ F_6 = 8,\ \dots ,满足递推关系:Fn=Fn1+Fn2(n3)F_n = F_{n-1} + F_{n-2} \quad (n \geq 3)

那么第n n 项分数为:Fn+2Fn+1\frac{F_{n+2}}{F_{n+1}}

验证:

  • 第 1 项:F3F2=21\frac{F_3}{F_2} = \frac{2}{1}

  • 第 2 项:F4F3=32\frac{F_4}{F_3} = \frac{3}{2}

  • 第 3 项:F5F4=53\frac{F_5}{F_4} = \frac{5}{3}

  • ……

因此,该问题本质是:计算前 20 个连续斐波那契相邻项之比的和

补充知识:这个分数序列的极限是著名的黄金比例ϕ=1+521.618 \phi = \frac{1+\sqrt{5}}{2} \approx 1.618 。随着项数增加,每一项越来越接近黄金比例。


运行示例

程序运行后输出前 20 项分数及其总和(保留小数):

2/1
3/2
5/3
8/5
13/8
21/13
34/21
55/34
89/55
144/89
233/144
377/233
610/377
987/610
1597/987
2584/1597
4181/2584
6765/4181
10946/6765
17711/10946
32.660263

最终结果约为 32.660263


👈点击左箭头查看答案(一定要在自己思考并实现后再看参考答案哦!)

规律分析

设当前分子为 fz,分母为 fm,初始时:

  • 第一项应为 2/1

  • 可从 fz = 2, fm = 1 开始,但更通用的做法是从斐波那契基础值 fz = 1, fm = 1 出发,在循环中先更新再使用。

在每次迭代中:

  1. 保存当前分母 temp = fm

  2. 新分母 = 原分子 → fm = fz

  3. 新分子 = 原分子 + 原分母 → fz = fz + temp

  4. 当前分数为 fz / fm,累加到总和

这正是斐波那契数列的生成过程。


程序实现

public class Demo20 {
    public static void main(String[] args) {
        double fm = 1.0; // 分母(F_n)
        double fz = 2.0; // 分子(F_{n+1})
        double sum = 0.0;

        for (int i = 0; i < 20; i++) {
            System.out.println((int)fz + "/" + (int)fm);
            sum += fz / fm;

            // 更新下一项:(fz, fm) -> (fz + fm, fz)
            double nextFz = fz + fm;
            fm = fz;
            fz = nextFz;
        }

        System.out.printf("前20项之和为:%.6f\n", sum);
    }
}

改进说明:

  • 使用 double 替代 float 提高精度(float 仅约 7 位有效数字,20 项后可能有误差)

  • 更清晰地体现“分子 = 前分子 + 前分母”的递推逻辑

  • 使用 printf 格式化输出,便于阅读


补充知识

  • 此题是斐波那契数列的经典应用之一。

  • 斐波那契数列最早由意大利数学家列奥纳多·斐波那契在 1202 年的《算盘书》中提出,最初用于描述兔子繁殖问题。

  • 相邻斐波那契数之比趋近于黄金分割比ϕ1.6180339887... \phi \approx 1.6180339887... ,这一比例在艺术、建筑、自然界中广泛存在(如向日葵种子排列、鹦鹉螺壳螺旋等)。

  • 本题虽简单,但融合了数列、递推、浮点运算、循环控制等多个编程与数学核心概念,是初学者理解算法思维的良好练习。