鱼C论坛

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

还是斐波那契数列

[复制链接]
发表于 2023-6-21 01:46:08 | 显示全部楼层 |阅读模式

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

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

x
本帖最后由 lzb1001 于 2023-6-21 07:41 编辑

斐波那契数列0、1、1、2、3、5、8、13、21、34、……,从第3项也就是1开始及其后的每项等于其前两项的和。


I. 下例中用完整包括0在内的斐波那契数列,传入的n是索引或下标,而不是项号??? 见https://baijiahao.baidu.com/s?id=1677366048581863957&wfr=spider&for=pc中的序号④

图片4.png

def fib(n):
    if n == 0:
        return 0
    if n in [1, 2]: # 也可写成if n == 1 or n == 2:
        return 1
    return fib(n - 1) + fib(n - 2)

while True:
    number = input('请输入索引或下标:').strip()
    if len(number) == 0: # 避免输入空值
        print()
        continue
    elif int(number) <= 0: # 避免输入0或负数
        print('输入错误!请确认后重新输入!', '\n')
    else:
        print(f'索引或下标 {number} 对应的数列的值:{fib(int(number))} ', '\n')




II. 下面是小甲鱼小兔崽子例子,用不包括0在内的斐波那契数列,传入的n是项号,而不是索引或下标???

图片5.png

# p6_8.py

def fib(n):

    if n < 1:
        print('输入有误!')
        return -1
    if n == 1 or n == 2:
        return 1
    else:
        return fib(n - 1) + fib(n - 2)

-----------------------------------------------------------------------------

【我的疑问】

以上两行红色字体的说法和理解不知对吗?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2023-6-21 03:06:23 | 显示全部楼层
def fib(n):
    if n < 1:
        return -1
    if n == 1 or n == 2:
        return 1
    else:
        return fib(n-1) + fib(n-2)
这里传入的 n 指的是第几项,所以 n == 1 或者 n == 2 的时候,结果均是 1。

值得一提的是斐波那契数列第一项有的说法是 0,即 0 1 1 2 3 5 ...;有的说法是 1,即 1 1 2 3 5 ...,这里的代码采用的是第二种说法,即第一项为 1 开始。

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

使用道具 举报

 楼主| 发表于 2023-6-21 09:37:02 | 显示全部楼层
本帖最后由 lzb1001 于 2023-6-21 09:38 编辑
小甲鱼 发表于 2023-6-21 03:06
这里传入的 n 指的是第几项,所以 n == 1 或者 n == 2 的时候,结果均是 1。

值得一提的是斐波那契数 ...


哦,看来就是因为有两种说法,数列开始的数字不同(加上有的文章说的是索引或下标,见https://baijiahao.baidu.com/s?id=1677366048581863957&wfr=spider&for=pc),所以导致结束条件和递归函数的条件不同,两边说法和口径不一样,初学者理解和看得有点懵

微信截图_20230621093637.png


感谢小甲鱼大师的亲自指点
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-12-26 21:45

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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