斐波那契数列python代码
斐波那契数列是一个经典的数学问题,可以用递归或迭代的方式来实现。
递归方式:
pythondef fibonacci_recursive(n):
if n <= 0:
return "输入值必须为正整数"
elif n == 1:
return 0
elif n == 2:
return 1
else:
return fibonacci_recursive(n-1) + fibonacci_recursive(n-2)
# 测试
n = 10 # 替换为你想要的斐波那契数列长度
result_recursive = [fibonacci_recursive(i) for i in range(1, n+1)]
print(result_recursive)
迭代方式:
pythondef fibonacci_iterative(n):
if n <= 0:
return "输入值必须为正整数"
fib_list = [0, 1]
while len(fib_list) < n:
fib_list.append(fib_list[-1] + fib_list[-2])
return fib_list[:n]
# 测试
n = 10 # 替换为你想要的斐波那契数列长度
result_iterative = fibonacci_iterative(n)
print(result_iterative)
你可以根据需要选择递归或迭代的方式。值得注意的是,递归方式在计算大数值时可能会变得较慢,因为它涉及到重复计算相同的子问题。而迭代方式则更有效率。
如果你关心性能,并希望进一步优化斐波那契数列的计算,可以考虑使用动态规划来避免递归中的重复计算。
动态规划方式:
pythondef fibonacci_dynamic_programming(n):
if n <= 0:
return "输入值必须为正整数"
fib_list = [0, 1]
for i in range(2, n):
fib_list.append(fib_list[-1] + fib_list[-2])
return fib_list
# 测试
n = 10 # 替换为你想要的斐波那契数列长度
result_dynamic_programming = fibonacci_dynamic_programming(n)
print(result_dynamic_programming)
这种方式将中间结果存储在列表中,避免了递归中的重复计算,提高了性能。
无论选择哪种方式,都要根据具体情况来决定。递归方式简单易懂,但在大数值情况下可能效率较低;迭代方式和动态规划方式性能更好,但可能稍显复杂。根据实际需求和代码的可读性做出选择。