Python 中输出斐波那契数列的多种实现方式

部署运行你感兴趣的模型镜像

以下是 Python 中输出斐波那契数列的多种实现方式,根据不同的需求选择合适的方法:


1. 输出前 N 项(基础迭代法)

def print_fibonacci(n):
    """输出前n项斐波那契数列(从0开始)"""
    a, b = 0, 1
    for _ in range(n):
        print(a, end=' ')
        a, b = b, a + b

# 示例:输出前10项
print_fibonacci(10)  # 输出: 0 1 1 2 3 5 8 13 21 34

2. 返回列表形式(存储所有项)

def get_fibonacci_list(n):
    """返回前n项的列表"""
    fib = [0, 1]
    for i in range(2, n):
        fib.append(fib[i-1] + fib[i-2])
    return fib[:n]  # 处理n=0或1的情况

# 示例
print(get_fibonacci_list(10))  # 输出: [0, 1, 1, 2, 3, 5, 8, 13, 21, 34]

3. 生成器实现(惰性生成无限序列)

def fibonacci_generator():
    """无限生成斐波那契数列"""
    a, b = 0, 1
    while True:
        yield a
        a, b = b, a + b

# 示例:输出前15项
fib = fibonacci_generator()
for _ in range(15):
    print(next(fib), end=' ')  # 输出: 0 1 1 2 3 5 8 13 21 34 55 89 144 233 377

4. 递归实现(仅教学用,效率低)

def fib_recursive(n):
    """返回第n项(递归实现,n≥0)"""
    if n <= 1:
        return n
    return fib_recursive(n-1) + fib_recursive(n-2)

# 示例:输出前10项
for i in range(10):
    print(fib_recursive(i), end=' ')  # 输出: 0 1 1 2 3 5 8 13 21 34

注意:此方法时间复杂度为 O(2^n),仅适合演示,实际避免使用。


5. 格式化输出(每行5项)

def print_fib_formatted(n, items_per_line=5):
    """每行固定项数打印"""
    a, b = 0, 1
    for i in range(n):
        print(f"{a:<8}", end='')  # 左对齐,占8字符
        if (i + 1) % items_per_line == 0:
            print()  # 换行
        a, b = b, a + b

# 示例:前20项,每行5个
print_fib_formatted(20)

输出效果

0       1       1       2       3       
5       8       13      21      34      
55      89      144     233     377     
610     987     1597    2584    4181    

6. 带下标的输出(显示项数)

def print_fib_with_index(n):
    """输出带序号的斐波那契数列"""
    a, b = 0, 1
    for i in range(n):
        print(f"Fib({i}) = {a}")
        a, b = b, a + b

# 示例
print_fib_with_index(5)

输出

Fib(0) = 0
Fib(1) = 1
Fib(2) = 1
Fib(3) = 2
Fib(4) = 3

7. 控制输出范围(指定起止项)

def print_fib_range(start, end):
    """输出第start到end项(含两端)"""
    a, b = 0, 1
    for i in range(end + 1):
        if i >= start:
            print(a, end=' ')
        a, b = b, a + b

# 示例:输出第5到10项
print_fib_range(5, 10)  # 输出: 5 8 13 21 34 55

性能对比建议

  • 小规模输出:直接使用迭代法(方法1或2)
  • 大规模输出:生成器(方法3)避免内存问题
  • 需要灵活控制:选择带范围或格式化的版本(方法5-7)

如果需要输出到文件或进一步处理,可以将 print 替换为写入操作。例如:

with open('fib.txt', 'w') as f:
    a, b = 0, 1
    for _ in range(100):
        f.write(f"{a}\n")
        a, b = b, a + b

您可能感兴趣的与本文相关的镜像

Python3.9

Python3.9

Conda
Python

Python 是一种高级、解释型、通用的编程语言,以其简洁易读的语法而闻名,适用于广泛的应用,包括Web开发、数据分析、人工智能和自动化脚本

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值