鱼C论坛

 找回密码
 立即注册
查看: 2000|回复: 2

[技术交流] 分享迭代实现斐波那契数列的代码(稍不同于教材)及注释,请多指教

[复制链接]
发表于 2023-6-16 16:20:19 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
本帖最后由 lzb1001 于 2023-6-16 16:34 编辑

斐波那契数列的基本思想:从第三项开始每一项都等于前两项的和

'''
n :所经过的月数,实际上表示的是斐波那契数列的项数,因为在这个代码中,n的值代表求解斐波那契数列的第n项。
n1:表示斐波那契数列中的第(n-2)项---待确认!
n2:表示斐波那契数列中的第(n-1)项---待确认!
n3:表示斐波那契数列中的第n项---待确认!
'''

def fab(n):
    n1 = 1 # 第1个月总对数为1
    n2 = 1 # 第2个月总对数为1
    n3 = 1 # 第3个月总对数默认初始值先为1,若无此行代码当fab(1)或fab(2)时会报错!
    # 上面三行代码也可简写成n1 = n2 = n3 = 1

    if n < 1: # 若输入的数值小于1(比如输入0毫无意义)
        print('输入有误!') # 则报错,输出错误提示
        return -1 # 注意此行缩进在if语句内!报错就返回-1(正常情况下是返回结果),可返回其他数值,但必须与倒数第5行if result == -1:的值对应?

    while n >= 3: # 前两项已知,求第3项,所以数列至少有3项,也就是n >= 3,感觉这样写比教材上的(n - 2) > 0要好理解些 --- 请大神指教!
        n3 = n1 + n2 # 等于左边两个月总对数的和---从头开始计算,依次递进!
        n1 = n2 # ……?---(n - 2)从左往右递进!
        n2 = n3 # ……?---(n - 1)从左往右递进!
        n -= 1 # 循环次数减1---循环次数从多到少!
   
    return n3 # 注意此行缩进在while循环体外!退出循环返回结果即最后一轮循环时n3的值


number = int(input('请输入月数:'))
result = fab(number) # result = -1 或 result = a3,取决于输入月数的值!
if result == -1:
    print('输入有误!') # 则报错,输出错误提示
else:
    #print('%d个月总共有%d对小兔子!' % (number, result))
    print(f'{number}个月总共有{result}对小兔子!' )
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2023-6-23 10:05:06 | 显示全部楼层
代码部分可以利用“<>”上传代码,像这样:
def fab(n):
    n1 = 1 # 第1个月总对数为1
    n2 = 1 # 第2个月总对数为1
    n3 = 1 # 第3个月总对数默认初始值先为1,若无此行代码当fab(1)或fab(2)时会报错!
    # 上面三行代码也可简写成n1 = n2 = n3 = 1

    if n < 1: # 若输入的数值小于1(比如输入0毫无意义)
        print('输入有误!') # 则报错,输出错误提示
        return -1 # 注意此行缩进在if语句内!报错就返回-1(正常情况下是返回结果),可返回其他数值,但必须与倒数第5行if result == -1:的值对应?

    while n >= 3: # 前两项已知,求第3项,所以数列至少有3项,也就是n >= 3,感觉这样写比教材上的(n - 2) > 0要好理解些 --- 请大神指教!
        n3 = n1 + n2 # 等于左边两个月总对数的和---从头开始计算,依次递进!
        n1 = n2 # ……?---(n - 2)从左往右递进!
        n2 = n3 # ……?---(n - 1)从左往右递进!
        n -= 1 # 循环次数减1---循环次数从多到少!
   
    return n3 # 注意此行缩进在while循环体外!退出循环返回结果即最后一轮循环时n3的值


number = int(input('请输入月数:'))
result = fab(number) # result = -1 或 result = a3,取决于输入月数的值!
if result == -1:
    print('输入有误!') # 则报错,输出错误提示
else:
    #print('%d个月总共有%d对小兔子!' % (number, result))
    print(f'{number}个月总共有{result}对小兔子!' )
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2023-6-26 08:44:36 | 显示全部楼层
yinda_peng 发表于 2023-6-23 10:05
代码部分可以利用“”上传代码,像这样:

收到
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-11-15 03:35

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表