本文将通过 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