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))
展示了递归、迭代、动态规划备忘录以及使用生成器四种不同方式来计算斐波那契数列。在实际编程中,通常会倾向于使用非递归的方式,因为它们对于大规模计算更有效率且避免栈溢出问题。