题目:
编写一个程序,实现斐波那契数列
思路:
斐波那契数列(Fibonacci sequence),又称黄金分割数列,指的是这样一个数列:0、1、1、2、3、5、8、13、21、34、……
在数学上,费波那契数列是以递归的方法来定义:
F0 = 0 (n=0)
F1 = 1 (n=1)
F(n) = F(n - 1)+F(n - 2)(n ≥ 3,n ∈ N*)
解题:
求第n个斐波那契数
#for循环:
num = int(input('请输入数字:'))
def fib1(n):
a, b = 1, 1
for j in range(n - 1): # ♻️
a, b = b, a + b
return a
print('第{}个斐波那契数:{}'.format(num, fib1(num)))
#递归
num = int(input('请输入数字:'))
def fib2(n):
if n == 1 or n == 2:
return 1
else:
return fib2(n - 1) + fib2(n - 2)
print('第{}个斐波那契数:{}'.format(num, fib2(num)))
求前n个或者指定个数的斐波那契数列
num = int(input('请输入数字:'))
def fib2(n):
if n == 1 or n == 2:
return 1
else:
return fib2(n - 1) + fib2(n - 2)
print('第{}个斐波那契数:{}'.format(num, fib2(num)))
# 直接使用上面提到的fibonacci函数
def fib1(n):
a, b = 1, 1
for j in range(n - 1):
a, b = b, a + b
return a
if num <= 0:
print('无效的输入!')
else:
print('前{}个斐波那契数为:'.format(num))
for i in range(1, num + 1):
print('{:8}'.format(fib1(i)), end='') # 格式化输出,每个结果占8位
if i % 5 == 0: # 每输出5个,换一行
print()
求大于某个数num的最小斐波那契数
num = int(input('请输入数字:'))
def fib2(n):
if n == 1 or n == 2:
return 1
else:
return fib2(n - 1) + fib2(n - 2)
print('第{}个斐波那契数:{}'.format(num, fib2(num)))
# 直接使用上面提到的fibonacci函数
def fib2(n):
if n == 1 or n == 2:
return 1
else:
return fib2(n - 1) + fib2(n - 2)
if num <= 0:
print('无效的输入!')
else:
for i in range(1, num + 1):
if fib2(i) > num:
print('大于{}的最小斐波那契数是: {}\n它是数列中的第{}个数'.format(num, fib2(i), i))
break
扩展:
参考资料:Python计算斐波那契数列
这篇博客介绍如何使用Python编程解决斐波那契数列问题,包括计算指定位置的数以及找到大于特定数值的最小斐波那契数。
2486

被折叠的 条评论
为什么被折叠?



