这就是我所做的循环:
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
答案 0 :(得分:1)
您收到此错误是因为您混淆了全局变量和局部变量。您可以通过使用main()解决此问题。通常,除了import语句之外的任何函数定义之外的任何东西都是不好的做法。
基本上,当您在函数之外定义变量时,可以为程序的整个定义变量。在函数内部定义变量时,为该函数定义仅,并且不能在函数外部引用。可以使用变量的位置和时间称为范围。
您在此处将n定义为全局变量:
n = 1
然后在n_inc
中将其重新定义为局部变量
n = n + 2
这意味着n现在是一个局部变量,你不能在conts_frac中使用它。您可以通过重命名变量,实现主函数或调整函数参数来使用n
来解决此问题。我希望这有帮助,祝你好运米尔扎!
编辑:我刚注意到有人评论指出了这一点。我希望这至少有助于澄清他的意思。