斐波拉契数列问题
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,而不是其他数值? c的值你随便换,这里给1只是为了整齐、美观 斐波那契数列如下:
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这里就会定义 Daniel_Zhang 发表于 2021-3-24 01:06
斐波那契数列如下:
1、1、2、3、5、8、13、21、34
谢谢,我明白 了 因为斐波那契数列前两项都为1,而函数是以c作为输出结果的,所以当n<3的时候函数不会进入while循环,此时输出的结果必然是斐波那契数列的前两项中的一个,也就是1,所以c必须要初始化为1。 Daniel_Zhang 发表于 2021-3-24 01:06
斐波那契数列如下:
1、1、2、3、5、8、13、21、34
就这个程序而言,c必须事先定义并初始化为1的,否则当n等于1或2的时候,程序会报错或者输出的值不是斐波那契数列。 我的代码是这样的
#!/usr/bin/python3
def fblj(num):
if num == 1:
return
if num == 2:
return
counter = 2
return_list =
while counter<= num:
return_list.append(int(return_list + return_list))
counter += 1
return return_list
num = int(input("Please input a number:"))
fblj_list = fblj(num)
print(fblj_list)
结果:
Please input a number:20
Loganable 发表于 2021-3-24 10:35
就这个程序而言,c必须事先定义并初始化为1的,否则当n等于1或2的时候,程序会报错或者输出的值不是斐波 ...
{:10_248:}有道理吼
没仔细看他的程序构造{:10_336:}
页:
[1]