Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Recursive code returns None [duplicate]

I really do not understand, why the code

def isIn(char, aStr): 
    ms = len(aStr)/2
    if aStr[ms] == char:
        print 'i am here now'
        return True
    elif char>aStr[ms] and not ms == len(aStr)-1:
        aStr = aStr[ms+1:]
    elif char <aStr[ms] and not ms == 0:
        aStr = aStr[0:ms]
    else:
        return False
    isIn(char, aStr)

print isIn('a', 'ab')

does keep on returning None. it prints 'i am here now', but it does not return True, just as the next line says. Why?

like image 819
HeinzKurt Avatar asked Jun 19 '26 04:06

HeinzKurt


1 Answers

You probably want a return on the last line:

return isIn(char, aStr)

Without it, the function simply returns None when it terminates without seeing a return.

like image 65
arshajii Avatar answered Jun 20 '26 18:06

arshajii