使用此代码时,我得到的值始终返回0
def fi(arr,mini):
print(arr)
if(len(arr)<3):
x = mini
return
for j in range(1,(math.ceil(len(arr)/2) )):
l1 = 2*j+1
if(med(arr[0:l1])<mini):
mini= med(arr[0:l1])
print("hello", mini)
fi(arr[1:],mini)
return x
答案 0 :(得分:1)
仅在x
时定义len(arr) < 3
。在其他情况下,它是未分配的。您应在if
块之前 或在else
块内添加默认值,具体取决于您要执行的操作。
答案 1 :(得分:0)
在将x
分配给mini
之前,您尚未声明。您的函数默认应返回什么?
答案 2 :(得分:0)
您定义了局部变量“ x”,其范围仅限于if块,并且您试图从函数中返回此变量,因此它变得不确定。最好在函数中定义局部变量x,并为其提供一些默认值,该默认值应由函数返回。
def fi(arr,mini):
x = some_default_value
print(arr)
if(len(arr)<3):
x = mini
return
for j in range(1,(math.ceil(len(arr)/2) )):
l1 = 2*j+1
if(med(arr[0:l1])<mini):
mini= med(arr[0:l1])
print("hello", mini)
fi(arr[1:],mini)
return x