[Tutor] self keyword in recursive function
Peter Otten
__peter__ at web.de
Fri May 30 15:44:31 CEST 2014
Ritwik Raghav wrote:
> I joined the topcoder community tomorrow and tried solving the
> PersistentNumber problem:
> "Given a number x, we can define p(x) as the product of the digits of x.
> We can then form a sequence x, p(x), p(p(x))... The persistence of x is
> then defined as the index (0-based) of the first single digit number in
> the sequence. For example, using 99, we get the sequence 99, 9*9 = 81, 8*1
> = 8. Thus, the persistence of 99 is 2. You will be given n, and you must
> return its persistence."
>
> It asks to define a function def getPersistence(self, n). I solved the
> problem in IDLE. My code is:
>
> def getPersistence(n,count = 0):
> product = 1
> if len(str(n)) == 1:
> return count
> else:
> a = str(n)
> for i in range(len(a)):
> product *= int(a[i])
> count += 1
> return getPersistence(product,count)
>
> Now plz help me to convert the above code in specified format. Or help me
> understand how to recreate the function as specified.
The "topcoder" site is probably infested with the world view of Java where
every function is a method inside a class. You may have to wrap your code
into something like
class PersistentNumber:
def getPersistence(self, n, count=0):
... # your code with a minor change (*)
(*) Inside the method the recursive call becomes
self.getPersistence(product, count)
instead of just
getPersistence(product, count)
More information about the Tutor
mailing list