帅气小哥 发表于 2021-4-15 14:59:53

为啥我这个他说没有使用局部变量

def lsp(n):
    n1 = 1
    n2 = 1
    if n <= 2:
      print("n = 1")
    else:
      for i in range(3, n+1):
            n3 = n1 +n2
            n2 = n3
            n1 = n2#就是这个n1 没有使用 局部变量
            return n3

print(lsp(5))

是第24讲的斐波那契数列结果输出应该为5

Hoiste 发表于 2021-4-15 15:32:27

本帖最后由 Hoiste 于 2021-4-15 15:33 编辑

虽然不知道你在问啥,不过代码几个问题还是能够跟你说下,
1、n2 = n3
n1 = n2这一段最终结果会变成n1 = n2,应该改成n1,n2 = n2,n3这种形式

2、return的位置不对,函数遇到return直接就返回结果并结束了,所以不会继续执行for循环的第二次循环,需要把return放到循环体外面去。

修改之后:
def lsp(n):
    n1 = 1
    n2 = 1
    if n <= 2:
      print("n = 1")
    else:
      for i in range(3, n+1):
            n3 = n1 +n2
            n1,n2 = n2,n3
      return n3
print(lsp(5))

帅气小哥 发表于 2021-4-15 18:53:45

Hoiste 发表于 2021-4-15 15:32
虽然不知道你在问啥,不过代码几个问题还是能够跟你说下,
1、n2 = n3
n1 = n2这一段最终结果会变成n1 =...

谢谢啊我回去调了一下 确实 感谢感谢
页: [1]
查看完整版本: 为啥我这个他说没有使用局部变量