斐波那契数列概念:
兔子出生两个月后拥有繁殖能力、求任意月数兔子的总对数
斐波那契数列原理:
前两个数都是1、从第三个数开始、每个数的值是前两个数的总和
斐波那契数列数学函数模型:
F(1) = 1
F(2) = 1
F(n) = F(n-1) + F(n-2),n>2
'''
*斐波那契数列----循环版*
*2019-01-03*
*Vk*
'''
m = 1 #m是初始的月数
k = input("请输入需要计算的月数:\n") #引导用户输入
k = int(k) #数字字符强转整型、k是计算的月数
if k < 1: #条件控制
print("请输入正确的月数哦") #人机交互
while m <= k: #循环条件
if m == 1:
n1 = 1 #第一个月兔子无繁殖能力数量为1对
print("第",m,"个月有",n1,"对兔子")
m += 1 #月份自加控制循环
elif m == 2:
n2 = 1 #第二个月兔子无繁殖能力数量为1对
print("第",m,"个月有",n2,"对兔子")
m += 1 #月份自加控制循环
else:
N = n1 + n2 #第N个月兔子有繁殖能力、数量为前两个月总和
print("第",m,"个月有",N,"对兔子")
m += 1 #月份自加控制循环
n1 = n2 #利用交换对n1重新赋值
n2 = N #利用交换对n2重新赋值
'''
*斐波那契数列----简化版*
*2019-01-03*
*Vk*
'''
n1 = 1 #第一个月兔子无繁殖能力、数量为1对
n2 = 1 #第二个月兔子无繁殖能力、数量为1对
k = input("请输入需要计算的月数:\n") #引导用户输入
k = int(k) #数字字符强转整型、k是计算的月数
if k < 1: #条件控制
print("请输入正确的月数哦") #人机交互
elif k == 1 or k == 2: #第一、二月都只有一对兔子
print("第",k,"个月共有1对兔子")
else:
m = k #用m来控制循环、不会改变用户输入的值
while m > 2: #输入月份小于2就跳出循环
N = n1 + n2 #从第三个月开始、每月兔子数量是前两个月之和
n1 = n2 #数据交换
n2 = N #数据交换
m -= 1 #循环控制
print("第",k,"个月共有",N,"对兔子") #输出总数
也可以将该算法写成函数形式、利用递归来调用
'''
*斐波那契数列----递归版*
*2019-01-07*
*Vk*
'''
def dg(k):
if k < 1:
print("请输入正确的月数哦")
return 0
elif k == 1 or k == 2:
return 1
else:
return dg(k-1)+dg(k-2)
k = input("请输入需要计算的月数:\n")
k = int(k)
number = dd(k)
if number != 0:
print('第%d个月共有%d对兔子'%(k,number))