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))
  • 1.
  • 2.
  • 3.
  • 4.
  • 5.
  • 6.
  • 7.
  • 8.
  • 9.
  • 10.
  • 11.
  • 12.
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))
  • 1.
  • 2.
  • 3.
  • 4.
  • 5.
  • 6.
  • 7.
  • 8.
  • 9.
  • 10.
  • 11.
  • 12.
  • 13.
  • 14.
  • 15.
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))
  • 1.
  • 2.
  • 3.
  • 4.
  • 5.
  • 6.
  • 7.
  • 8.
  • 9.
  • 10.
  • 11.
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))
  • 1.
  • 2.
  • 3.
  • 4.
  • 5.
  • 6.
  • 7.
  • 8.
  • 9.
  • 10.

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