Dato un elenco ordinato di numeri, ho bisogno di trovare il numero più piccolo che è maggiore di un dato numero. Considerate questo elenco:Trova il numero più piccolo che è maggiore di un dato numero in un elenco ordinato
arr=[1,2,3,5,7,11,101,131,151,181,191,313,353,373,383]
Pronunciare il numero specificato è 320. Poi, il mio metodo dovrebbe restituire 353 come 353 è il più piccolo numero maggiore di 320.
Sto cercando di usare un po 'modificata forma di ricerca binaria; comunque durante l'esecuzione il programma va in loop infinito.
def modBinarySearch(arr,x):
l=len(arr)
mid=l/2
if arr[mid]>=x and arr[mid-1]<x:
return arr[mid]
elif arr[mid]>x and arr[mid-1]>x:
modBinarySearch(arr[mid:l],x)
else:
modBinarySearch(arr[0:mid],x)
N=int(raw_input())
arr=[1,2,3,5,7,11,101,131,151,181,191,313,353,373,383]
print modBinarySearch(arr,N)
Qualcuno può sottolineare quello che sto facendo di sbagliato?
Oh .. Sì, capito. Grazie per aver segnalato !! – OneMoreError
Hai sempre bisogno di restituire i valori dalle tue chiamate ricorsive piuttosto che buttare via queste informazioni. Senza quello, non importa ciò che fa il resto del codice. Inoltre, stai usando '1' (wun) dove dovresti usare' l' (ell). – paxdiablo