打印前 n 项斐波那契数列

🎉摘要:Python 是一门解释型、面向对象、动态类型的高级编程语言,由荷兰程序员 Guido van Rossum 于 1991 年发布,核心设计理念是优雅、明确、简单。

本文将通过 Python 语句打印斐波那契数列。

斐波那契数列(Fibonacci sequence)是数学中最经典、应用最广泛的递推数列之一,核心规律是从第三项开始,每一项等于前两项之和,因与黄金分割高度相关,也叫黄金分割数列。

1202 年,意大利数学家莱昂纳多・斐波那契(Leonardo Fibonacci)在《算盘全书》中提出:一对刚出生的兔子,第 3 个月起每月生一对小兔,所有兔子不死,问 n 个月后有多少对兔子。

第 1 月:1 对(幼兔)

第 2 月:1 对(成年)

第 3 月:1+1=2 对(成年 + 新生)

第 4 月:2+1=3 对

第 5 月:3+2=5 对

……

由此诞生数列:1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89, ...

方法一:最简单易懂

直接通过 for 循环实现,代码简单,示例代码:

# 定义要打印的项数
n = 20

# 初始化前两项
a, b = 0, 1

print(f"斐波那契数列前 {n} 项:")
# 循环打印
for _ in range(n):
    print(a, end=" ")
    a, b = b, a + b  # 同时更新两个变量

运行结果:

斐波那契数列前 20 项:
0 1 1 2 3 5 8 13 21 34 55 89 144 233 377 610 987 1597 2584 4181

方法二: 生成列表

定义一个函数,将生成的数据放入到列表中,返回给调用者,方便多次使用。示例代码:

def fibonacci(n):
    # 处理边界情况
    if n <= 0:
        return []
    elif n == 1:
        return [0]
    
    fib_list = [0, 1]
    # 从第3项开始生成
    for i in range(2, n):
        next_num = fib_list[i-1] + fib_list[i-2]
        fib_list.append(next_num)
    return fib_list

# 调用函数,打印前20项
result = fibonacci(20)
print("斐波那契数列前20项:\n", result)

运行结果:

斐波那契数列前20项:
 [0, 1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89, 144, 233, 377, 610, 987, 1597, 2584, 4181]

方法三: 递归写法

使用递归方式,即函数自我调用,直到遇到终止条件。

注意,递归不适合计算大量项,因为效率低。

示例代码:

# 定义递归函数,计算第 n 个斐波那数
def fib_recursive(n):
    # 递归终止条件(基线条件)
    # 当 n 为 0 时返回 0,n 为 1 时返回 1,对应斐波那契数列的前两项
    if n <= 1:
        return n
    # 递归调用,第 n 项 = 第 n-1 项 + 第 n-2 项
    # 函数不断调用自身,直到触发终止条件
    return fib_recursive(n-1) + fib_recursive(n-2)

# 设置要打印的项数
n = 20

# 输出提示文字
print(f"斐波那契数列前 {n} 项:")

# 循环 0~19,依次获取前 20 项斐波那数并打印
for i in range(n):
    # end=" " 表示用空格分隔输出,不换行
    print(fib_recursive(i), end=" ")

运行结果:

斐波那契数列前 20 项:
0 1 1 2 3 5 8 13 21 34 55 89 144 233 377 610 987 1597 2584 4181

  

说说我的看法
全部评论(
没有评论
关于
本网站专注于 Java、数据库(MySQL、Oracle)、Linux、软件架构及大数据等多领域技术知识分享。涵盖丰富的原创与精选技术文章,助力技术传播与交流。无论是技术新手渴望入门,还是资深开发者寻求进阶,这里都能为您提供深度见解与实用经验,让复杂编码变得轻松易懂,携手共赴技术提升新高度。如有侵权,请来信告知:hxstrive@outlook.com
其他应用
公众号