鱼C论坛

 找回密码
 立即注册
查看: 1831|回复: 7

[已解决]斐波拉契数列问题

[复制链接]
发表于 2021-3-23 21:31:18 | 显示全部楼层 |阅读模式

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

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

x
def fblj(n):
    a = 1
    b = 1
    c = 1
    while (n-2)> 0:
        c = a + b
        a = b
        b = c
        n -= 1
    return c


a = int(input("输入一个整数:"))
b = fblj(a)
print("%d的斐波拉契数列是%d"%(a,b))


这里边的 a,b c 为什么都定义为1,而不是其他数值?
最佳答案
2021-3-24 01:06:41
斐波那契数列如下:

1、1、2、3、5、8、13、21、34

a你可以理解为左值,b为右值

所以一开始 a = 1 b = 1
然后 b 的值变为后一位的值,也就是 2,a的值变为b的值,也就是 1

c 的话,你c = 1只是定义 c 并初始化,有没有都无所谓,c = a + b这里就会定义
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2021-3-23 21:43:07 | 显示全部楼层
c的值你随便换,这里给1只是为了整齐、美观
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2021-3-24 01:06:41 | 显示全部楼层    本楼为最佳答案   
斐波那契数列如下:

1、1、2、3、5、8、13、21、34

a你可以理解为左值,b为右值

所以一开始 a = 1 b = 1
然后 b 的值变为后一位的值,也就是 2,a的值变为b的值,也就是 1

c 的话,你c = 1只是定义 c 并初始化,有没有都无所谓,c = a + b这里就会定义
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2021-3-24 10:04:59 | 显示全部楼层
Daniel_Zhang 发表于 2021-3-24 01:06
斐波那契数列如下:

1、1、2、3、5、8、13、21、34

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

使用道具 举报

发表于 2021-3-24 10:14:41 | 显示全部楼层
因为斐波那契数列前两项都为1,而函数是以c作为输出结果的,所以当n<3的时候函数不会进入while循环,此时输出的结果必然是斐波那契数列的前两项中的一个,也就是1,所以c必须要初始化为1。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2021-3-24 10:35:24 | 显示全部楼层
Daniel_Zhang 发表于 2021-3-24 01:06
斐波那契数列如下:

1、1、2、3、5、8、13、21、34

就这个程序而言,c必须事先定义并初始化为1的,否则当n等于1或2的时候,程序会报错或者输出的值不是斐波那契数列。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2021-3-24 11:11:54 | 显示全部楼层
我的代码是这样的

#!/usr/bin/python3

def fblj(num):
        if num == 1:
                return [1]

        if num == 2:
                return [1,1]

        counter = 2
        return_list = [1,1]

        while counter  <= num:
                return_list.append(int(return_list[counter-1] + return_list[counter-2]))
                counter += 1

        return return_list

num = int(input("Please input a number:"))

fblj_list = fblj(num)

print(fblj_list)


结果:
Please input a number:20
[1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89, 144, 233, 377, 610, 987, 1597, 2584, 4181, 6765, 10946]
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2021-3-24 15:33:26 | 显示全部楼层
Loganable 发表于 2021-3-24 10:35
就这个程序而言,c必须事先定义并初始化为1的,否则当n等于1或2的时候,程序会报错或者输出的值不是斐波 ...

有道理吼

没仔细看他的程序构造
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-1-16 05:56

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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