文章目录
1. 知识储备🗂
斐波那契数列(Fibonacci sequence),又称黄金分割数列。因意大利数学家Leonardo Fibonacci以兔子繁殖为例子而引入,故又称为“兔子数列”
指的是这样一个数列:1、1、2、3、5、8、13、21、34、……
在数学上,斐波那契数列被以递推的方法定义:
F(1) = 1,F(2) = 1, F(n) = F(n - 1)+F(n - 2)(n ≥ 3,n ∈ N*)
2. 几种情形🏞
2.1 求第n个斐波那契数(核心❤️)
运行效果✨
请输入数字:10
第10个斐波那契数:55
2.1.1 方法一:使用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)))
2.1.2 方法二:使用递归
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)))
2.2 求前n个斐波那契数
思路:在上方函数的基础上加上一个for循环即可
运行效果✨(格式化输出):
请输入数字:14
前14个斐波那契数为:
1 1 2 3 5
8 13 21 34 55
89 144 233 377
实现代码🧑🏻💻:
num = int(input('请输入数字:'))
# 直接使用上面提到的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()
2.3 求大于某个数num的最小斐波那契数
运行效果✨:
请输入数字:128
大于128的最小Fibonacci数是: 144
它是数列中的第12个数
实现代码🧑🏻💻:
num = int(input('请输入数字:'))
# 直接使用上面提到的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
相关内容