sam wrote:
> def recursive_halve(value):
>
>     if value < 1:
>       print value
>       return value
>     else:
>       value = value/2
>       print value
>       if value < 1:
>           return value
>       else:
>           recursive_halve(value)

Missing a return on the last line is likely your immediate problem.

You have more subtle problems, though.  First, you have needlessly
reduplicated value<1 test--the first thing recursive_halve does is to
check whether value<1, so there's no need to check whether value<1
before calling it.

Second, you have redundant branching logic.  Look at your first else
statement.  It does nothing; the else doesn't affect whether the stuff
inside it gets executed or not; it's redundant.  It's better style to
not to have such redundancy (either by omitting the else, or having a
single return point).

The following should do exactly what you want.

def recursive_halve(value):
    if value < 1:
        print value
        return value
    value = value/2
    print value
    return recursive_halve(value)


Carl Banks

-- 
http://mail.python.org/mailman/listinfo/python-list

Reply via email to