斐波那契数列问题求助!
本帖最后由 陌生的谜语 于 2019-2-22 08:41 编辑def fab(n):
n1 = 1
n2 = 1
n3 = 1
if n < 1:
print("输入代码有误!")
return -1
while n > 2:
n3 = n2 + n1
n1 = n2
n2 = n3
n -= 1
return n3
fab(10)
# 题目中n3 = 1不写是不是也没有问题?
# 最初想的是for循环,请教各位大佬,如果这个语句用for循环要怎么写?
'''
题目中
n1 = n2
n2 = n3
两行代码调换下位置,为什么结果会变?
'''
'''
另外。如果用
n = 1 or n = 2
return 1
这种方式,用迭代能写出来吗?开始的想法不是n1,n2,n3,而是这种。
''' 1. n3 不写没有问题。
2.两行代码换一下位置,即n2 = n3
n1 = n2,最后n1和n2的值都等于n3的值,如果不交换位置,n1的值是n2的值,n2的值是n3的值。
如果你不明白,你得去了解一下程序执行顺序与pyhton变量赋值。
3. 没明白你的意思,用迭代写出什么来? °蓝鲤歌蓝 发表于 2019-2-21 20:31
1. n3 不写没有问题。
2.两行代码换一下位置,即,最后n1和n2的值都等于n3的值,如果不交换位置,n1的值是 ...
你回答的前两个问题我明白了,第三个我想说的是
n = 1 or n = 2
return 1
这种是小甲鱼课上的递归方式。
def fab(n):
if n < 1:
print("输入有误!")
if n == 1 or n == 2:
return 1
if n > 2:
return fab(n - 1) + fab(n - 2)
fab(5)
我想说如果不是
n1=1
n2=1
而是n = 1 or n = 2 然后用迭代方式,可以写出来吗? 陌生的谜语 发表于 2019-2-21 20:41
你回答的前两个问题我明白了,第三个我想说的是
n = 1 or n = 2
return 1
不可以。
划重点
递归。。。。。 我觉得应该是n1 = 1 and n2 =1吧
页:
[1]