Python中实现斐波那契数列的四种方法
1. 递归方法 (简洁但效率低,尤其对于较大的n值)
Python
1def fibonacci_recursive(n):
2 if n <= 0:
3 return "输入的数值应大于0"
4 elif n == 1:
5 return 0
6 elif n == 2:
7 return 1
8 else:
9 return fibonacci_recursive(n - 1) + fibonacci_recursive(n - 2)
10
11# 示例调用
12print(fibonacci_recursive(10))
2. 循环迭代法 (效率更高)
Python
1def fibonacci_iterative(n):
2 if n <= 0:
3 return []
4 elif n == 1:
5 return [0]
6 elif n == 2:
7 return [0, 1]
8 else:
9 fib_sequence = [0, 1]
10 for _ in range(2, n):
11 fib_sequence.append(fib_sequence[-1] + fib_sequence[-2])
12 return fib_sequence[:n]
13
14# 示例获取前10个斐波那契数
15print(fibonacci_iterative(10))
3. 动态规划备忘录法 (优化递归,避免重复计算)
Python
1def fibonacci_memoization(n, memo={}):
2 if n in memo:
3 return memo[n]
4 elif n <= 2:
5 memo[n] = n - 1
6 else:
7 memo[n] = fibonacci_memoization(n - 1, memo) + fibonacci_memoization(n - 2, memo)
8 return memo[n]
9
10# 示例调用
11print(fibonacci_memoization(10))
4. 闭包函数实现懒惰求值
Python
1def fibonacci_lazy():
2 a, b = 0, 1
3 while True:
4 yield a
5 a, b = b, a + b
6
7# 使用生成器获取前10个斐波那契数
8fib_generator = fibonacci_lazy()
9for _ in range(10):
10 print(next(fib_generator))
展示了递归、迭代、动态规划备忘录以及使用生成器四种不同方式来计算斐波那契数列。在实际编程中,通常会倾向于使用非递归的方式,因为它们对于大规模计算更有效率且避免栈溢出问题。