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
个台阶的不同方法的数量,这和斐波那契数列的定义是一致的。