[Tutor] exercise is recursion
Moshe Zadka
Moshe Zadka <moshez@math.huji.ac.il>
Tue, 21 Nov 2000 16:22:25 +0200 (IST)
On Tue, 21 Nov 2000, Remco Gerlich wrote:
> I would write it like this:
>
> import math
>
> def factors(n, highestsofar=2):
> for i in range(highestsofar, math.sqrt(n)+1):
> if n % i == 0:
> return [i] + factors(n/i, i)
> return [n]
def factors(n, highestsofar=2, factorssofar=None):
if factorssofar is None:
factorssofar = []
for i in range(highestsofar, math.sqrt(n)+1):
if n % i == 0:
factorssofar.append(i)
return factors(n/i, i, factorssofar)
factorssofar.append(n)
return factorssofar
Is more efficient, and almost as clear.
--
Moshe Zadka <moshez@math.huji.ac.il> -- 95855124
http://advogato.org/person/moshez