跳到主要内容

Python实现台阶问题/斐波纳挈?

参考答案:

在Python中,你可以使用递归或迭代来实现斐波那契数列(Fibonacci sequence),这个数列经常被用来解决台阶问题。

递归实现

递归是一种非常直观的实现方式,但请注意,对于大的输入值,递归可能会导致栈溢出。

def fibonacci(n):
    if n <= 1:
        return n
    else:
        return fibonacci(n-1) + fibonacci(n-2)

# 测试
print(fibonacci(10))  # 输出:55

迭代实现

迭代是一个更加高效的实现方式,因为它避免了递归带来的额外开销。

def fibonacci(n):
    a, b = 0, 1
    for _ in range(n):
        a, b = b, a + b
    return a

# 测试
print(fibonacci(10))  # 输出:55

台阶问题

台阶问题(也称为爬楼梯问题)是斐波那契数列的一个变种。假设你一次可以爬1个或2个台阶,那么爬到第n个台阶有多少种不同的方法?这其实就是斐波那契数列。

使用迭代方式来解决这个问题:

def climb_stairs(n):
    if n <= 2:
        return n
    a, b = 1, 2
    for _ in range(3, n+1):
        a, b = b, a + b
    return b

# 测试
print(climb_stairs(10))  # 输出:89,表示有89种不同的方法可以爬到第10个台阶

这里,climb_stairs函数返回的是爬到第n个台阶的不同方法的数量,这和斐波那契数列的定义是一致的。