python recursive function

HYRY ruoyu0088 at gmail.com
Fri Jan 11 04:52:16 EST 2008


> def bears (n):
>     if n==42:
>         return True
>     if n%5==0:
>         bears(n-42)
>     if n%2==0:
>         bears(n/2)
>     if n%3==0 or n%4==0:
>         one = (n%10)
>         two = ((n%100)/10)
>         if one!=0 and two!=0:
>             bears(n-(one*two))
>     return False
>
> If a game hits 42 it should return True, otherwise False. If program
> never hits 42 and return True, then it returns False. I figured out
> base case, but I still get False when I enter bears(250). Any help
> would be very appreciated!

try this:

def bears (n):
    if n==42:
        return True
    if n%5==0:
        if bears(n-42):
            return True
    if n%2==0:
        if bears(n/2):
            return True
    if n%3==0 or n%4==0:
        one = (n%10)
        two = ((n%100)/10)
        if one!=0 and two!=0:
            if bears(n-(one*two)):
                return True
    return False

print bears(42)
print bears(250)
print bears(50)
print bears(84)
print bears(41)



More information about the Python-list mailing list