斐波那契数列
- 问题描述
已知有一对兔子,从第一个月起,到第三个月会生一对小兔子,而小兔子再过三个月之后又会生一对小兔子……以此类推
下面是推到过程:
第一个月: 1 对小兔子
第二个月: 1 对小兔子
第三个月: 1 对大兔子 1 对小兔子(本月生)
第四个月: 1 对大兔子 1 对小兔子(本月生) 1对小兔子(上月生)
第五个月: 2 对大兔子 2 对小兔子(本月生) 1对小兔子(上月生)
第六个月: 3 对大兔子 3 对小兔子(本月生) 2对小兔子(上月生)
第七个月: 5 对大兔子 5 对小兔子(本月生) 3对小兔子(上月生)
………………
以此类推
所以最后推出的结果就是f(n-2)+f(n-1)
下面是代码实现:
斐波那契数列的实现
@Author: xiaozhi
@date: 2019-08-11
n1 = 1
n2 = 1
num = input("输入计算的斐波那契数列的个数:")
if num.isdigit(): # 区分符号位
num = int(num) # 字符串转为int整型
if num ==0:
print("输入内容非法")
pass
if num ==1:
print(n2)
if num ==2:
print(n2,n2)
if num >= 3:
for i in range(1,num + 1):
if i == 1:
print(1, end=",")
elif i == 2:
print(1, end=",")
else:
# result = n1 + n2 # 计算当前月份的兔子数
# print(result, end=",")
# # 然后交换数据
# n1 = n2
# n2 = result
n1,n2 = n2,n1+n2 # python里灵活的语法结构
print(n2,end=",")
pass
pass
pass
else:
print("输入内容非法")
下面是运行结果
输入计算的斐波那契数列的个数:10
1,1,2,3,5,8,13,21,34,55,