gpt4 book ai didi

python - 当我尝试从循环中进行递归时出现 UnboundLocalError ?

转载 作者:太空宇宙 更新时间:2023-11-03 17:11:12 25 4
gpt4 key购买 nike

这就是我作为循环所做的:

def cont_frac(k):

n=1

tempk=k
x=0
D=2.0

if k<1:
print("Invalid Input")
else:
while tempk>1:
n=n+2
tempk=tempk-1

while(k>=1):
N=n*n
x=N/(D+x)
n=n-2
k=k-1

这就是我递归所做的

n=1

k=int(input("enter the value of k:"))

p=k

def n_inc(tempk):

while tempk>1:

n=n+2

tempk=tempk-1

return n

def conts_frac(k):
x=0

D=2.0

if k<1:
print("invalid Input")
else:
n_inc(p)
N=n*n
x=N/(D+x)
n=n-2
return conts_frac(k-1)


conts_frac(k)

现在的问题是为什么这个错误UnboundLocalError发生在递归部分?

UnboundLocalError: local variable 'n' referenced before assignment

最佳答案

您收到此错误是因为您混淆了全局变量和局部变量。您可以使用 main() 来解决此问题。一般来说,除了 import 语句之外,在函数定义之外添加任何内容都是不好的做法。

基本上,当您在函数外部定义变量时,您是为程序的整个定义它。当您在函数内部定义变量时,您为该函数定义它,并且不能在函数外部引用。可以使用变量的地点和时间称为其范围

您在此处将 n 定义为全局变量:

n = 1

后来在n_inc中将其重新定义为局部变量

n = n + 2

这意味着 n 现在是一个局部变量,您不能在 conts_frac 中使用它。您可以通过重命名变量、实现主函数或调整函数参数以使用 n 来解决此问题。我希望这对您有所帮助,并祝您米尔扎好运!

编辑:我刚刚注意到有人评论指出了这一点。我希望这至少有助于澄清他的意思。

关于python - 当我尝试从循环中进行递归时出现 UnboundLocalError ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34072122/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com