Python高数----斐波那契数列

2019-01-03  本文已影响0人  CTLers丶Vk

斐波那契数列概念:
兔子出生两个月后拥有繁殖能力、求任意月数兔子的总对数

斐波那契数列原理:
前两个数都是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))
上一篇下一篇

猜你喜欢

热点阅读