python recursive function
fitzpatrick.dominic at googlemail.com
Fri Jan 11 15:46:51 CET 2008
On 11 Jan, 08:30, Tom_chicollegeboy <tbab... at gmail.com> wrote:
> here is what I have to do:
> This question involves a game with teddy bears. The game starts when I
> give you some bears. You then start giving me back some bears, but you
> must follow these rules (where n is the number of bears that you
> If n is even, then you may give back exactly n/2 bears. (Hint: To test
> whether n is even, use the expression ((n % 2) == 0).)
> If n is divisible by 3 or 4, then you may multiply the last two digits
> of n and give back this many bears. (By the way, the last digit of n
> is n%10, and the next-to-last digit is (n%100)/10; this rule may not
> be used if either of the last two digits is 0.)
> If n is divisible by 5, then you may give back exactly 42 bears.
> The goal of the game for you is to end up with EXACTLY 42 bears.
> For example, suppose that you start with 250 bears. Then you could
> make these moves:
> Start with 250 bears.
> Since 250 is divisible by 5, you may return 42 of the bears, leaving
> you with 208 bears.
> Since 208 is even, you may return half of the bears, leaving you with
> 104 bears.
> Since 104 is even, you may return half of the bears, leaving you with
> 52 bears.
> Since 52 is divisible by 4, you may multiply the last two digits
> (resulting in 10) and return these 10 bears. This leaves you with 42
> You have reached the goal!
> Now, you are to write a program that, if I give you n bears, returns
> true if it is at all possible for you to win the game. Your program
> must use recursion to check all possible ways in which you can apply
> the rules.
> >>> bears(42)
> >>> bears(250)
> >>> bears(50)
> >>> bears(84)
> >>> bears(41)
> As you see my program must use recursion.
> I came up with this idea but I am not sure if its right or are there
> any minor errors that I can easily fix:
> def bears (n):
> if n==42:
> return True
> if n%5==0:
> if n%2==0:
> if n%3==0 or n%4==0:
> one = (n%10)
> two = ((n%100)/10)
> if one!=0 and two!=0:
> 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!
May != Must and Could != Should
More information about the Python-list