python写斐波那契数列
作者:野牛程序员:2023-08-10 08:26:36python阅读 2613
斐波那契数列是一个经典的数列,其中每个数是前两个数的和,起始于 0 和 1。以下是几种在 Python 中生成斐波那契数列的方法:
使用循环:
def fibonacci_iterative(n): fib_sequence = [0, 1] for i in range(2, n): next_fib = fib_sequence[-1] + fib_sequence[-2] fib_sequence.append(next_fib) return fib_sequence n = 10 result = fibonacci_iterative(n) print(result)
使用递归(效率较低,因为存在重复计算):
def fibonacci_recursive(n): if n <= 0: return 0 elif n == 1: return 1 else: return fibonacci_recursive(n - 1) + fibonacci_recursive(n - 2) n = 10 result = [fibonacci_recursive(i) for i in range(n)] print(result)
使用迭代器生成斐波那契数列:
def fibonacci_generator(n): a, b = 0, 1 for _ in range(n): yield a a, b = b, a + b n = 10 fib_sequence = list(fibonacci_generator(n)) print(fib_sequence)
使用记忆化递归(避免了递归中的重复计算):
def fibonacci_memoization(n, memo={}): if n in memo: return memo[n] if n <= 0: memo[n] = 0 elif n == 1: memo[n] = 1 else: memo[n] = fibonacci_memoization(n - 1, memo) + fibonacci_memoization(n - 2, memo) return memo[n] n = 10 result = [fibonacci_memoization(i) for i in range(n)] print(result)
这些方法中,使用循环或迭代器的方法通常在效率上更优,因为它们避免了递归中的重复计算。
野牛程序员教少儿编程与信息学奥赛-微信|电话:15892516892
