陌生的谜语 发表于 2019-2-21 19:28:17

斐波那契数列问题求助!

本帖最后由 陌生的谜语 于 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,而是这种。
'''

°蓝鲤歌蓝 发表于 2019-2-21 20:31:26

1. n3 不写没有问题。
2.两行代码换一下位置,即n2 = n3
n1 = n2,最后n1和n2的值都等于n3的值,如果不交换位置,n1的值是n2的值,n2的值是n3的值。
如果你不明白,你得去了解一下程序执行顺序与pyhton变量赋值。
3. 没明白你的意思,用迭代写出什么来?

陌生的谜语 发表于 2019-2-21 20:41:23

°蓝鲤歌蓝 发表于 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:48:53

陌生的谜语 发表于 2019-2-21 20:41
你回答的前两个问题我明白了,第三个我想说的是
n = 1 or n = 2
return 1


不可以。

荣耀 发表于 2019-2-22 13:40:48

划重点


递归。。。。。

荣耀 发表于 2019-2-22 13:42:59

我觉得应该是n1 = 1 and n2 =1吧
页: [1]
查看完整版本: 斐波那契数列问题求助!