天毁至圣 发表于 2020-3-23 07:44:37

两代码相同运算结果却不同。

def fab(n):
    n1 = 1
    n2 = 1
    n3 = 1

    ifn < 1:
      print('输入有误1' )
      return -1

    while (n-2) > 0:
      n3= n2 + n1
      nl = n2
      n2 = n3
      n -= 1

      return n3

result = fab(20)
if result != -1:
    print('共有%d对小免惠子诞生!' % result)
为什么这个代码得到的结果是2。




def fab(n):
    n1 = 1
    n2 = 1
    n3 = 1

    if   n < 1:
      print('输入有误1' )
      return -1

    while (n-2) > 0:
      n3= n2+ n1
      n1 = n2
      n2 = n3
      n-=1


    return n3

result = fab(20)
if result != -1:
    print ('共有几!%d对兔子'% result)
而这个代码得到的是6765。

明明两代码是一样的,可是算出的结果却不同????
有没有大佬解答下?

qiuyouzhi 发表于 2020-3-23 07:47:32

第一段代码的while循环里面,n1写成nl了

永恒的蓝色梦想 发表于 2020-3-23 09:41:44

def fab(n):
    n1 = 1
    n2 = 1
    n3 = 1

    ifn < 1:
      print('输入有误1' )
      return -1

    while (n-2) > 0:
      n3= n2 + n1
      nl = n2
      n2 = n3
      n -= 1

      return n3

result = fab(20)
if result != -1:
    print('共有%d对小免惠子诞生!' % result)

变量名拼错了

zltzlt 发表于 2020-3-23 13:05:10

def fab(n):
    n1 = 1
    n2 = 1
    n3 = 1

    ifn < 1:
      print('输入有误1' )
      return -1

    while (n-2) > 0:
      n3= n2 + n1
      n1 = n2    # 变量名错了
      n2 = n3
      n -= 1

      return n3

result = fab(20)
if result != -1:
    print('共有%d对小免惠子诞生!' % result)

S.archagnelice 发表于 2020-3-23 20:06:42

本帖最后由 S.archagnelice 于 2020-3-23 20:08 编辑

第二个代码 return缩进不对。
你的
def fab(n):
    n1 = 1
    n2 = 1
    n3 = 1

    if   n < 1:
      print('输入有误1' )
      return -1

    while (n-2) > 0:
      n3= n2+ n1
      n1 = n2
      n2 = n3
      n-=1
        return n3 #正确的应该在这个位置。

    #return n3#这是你的。

result = fab(20)
if result != -1:
    print ('共有几!%d对兔子'% result)

对照你上面正确的那个看下这个缩进。
页: [1]
查看完整版本: 两代码相同运算结果却不同。