Ich habe zwei Programme für die in Python mit binären Suche SuchePython Rückkehr keine statt True/False
Programm 1:
def bin(alist,x):
if len(alist)==0:
return False
else:
mid=len(alist)//2
if (alist[mid]==x):
return True
else:
if alist[mid] < x:
#print(alist[mid+1:],x)
bin(alist[mid+1:],x)
else:
#print(alist[:mid],x)
bin(alist[:mid],x)
print (bin([2,3,5,8,9],8))
print (bin([2,3,5,8,9],7))
Programmausgabe:
None
None
Programm 2:
def bin(alist,x):
if len(alist)==0:
return False
else:
mid=len(alist)//2
if (alist[mid]==x):
return True
else:
if alist[mid]<x:
return bin(alist[mid+1:],x)
else:
return bin(alist[:mid],x)
print(bin([1,5,7,8,9],10))
print(bin([1,4,5,8,9],8))
Programm Ausgabe:
False
True
Warum ist es so?
Ich beantwortete die gleiche Frage vor ein paar Tagen! Muss aus dem gleichen Lehrbuch stammen! – d9ngle
Sie haben 'return' in Ihrem Programm 2 – haifzhan
' return' gibt nur den Wert eine Ebene nach oben der Call-Stack. Wenn Sie den Wert mehrere Funktionsaufrufe senden möchten, muss jede Funktion den Wert explizit zurückgeben. – user2357112