Я новичок в python и очень боюсь, пытаясь понять рекурсию. Я написал функцию, которая принимает одно целое число и возвращает список всех чисел в простой факторизации числа.Рекурсивное решение python для простой факторизации
Я написал это итеративно:
def primeFac(n):
lst=[]
c=2
while c<=n:
if n%c==0:
n//=c
lst.append(c)
else:
c+=1
return lst
который возвращает:
>>> primeFac(5)
[5]
>>> primeFac(72)
[2, 2, 2, 3, 3]
Как я могу сделать это рекурсивно? Это кажется ненужным, но мне нужно научиться делать это для моего окончательного экзамена.
Это то, что я написал до сих пор:
def primeFac(n):
lst = []
c = 2
if n<=c:
lst.append(n)
else:
while n%c!=0:
c+=1
if n==c:
lst.append(n)
else:
lst.append(c)
lst.append(primeFac(n//c))
return lst
и я получаю:
>>> primeFac(5)
[5]
>>> primeFac(72)
[2, [2, [2, [3, [3]]]]]
просто продлить LST с результатом рекурсивного вызова вместо добавления его ... 'ЛСТ + = primeFac (п/с)' – yurib