Como reduzir a função funciona?
Tanto quanto eu entendo, a função reduzir leva uma listal
e uma funçãof
. Em seguida, chama a funçãof
nos dois primeiros elementos da lista e depois chama repetidamente a funçãof
com o próximo elemento da lista e o resultado anterio
ntão, eu defino as seguintes funções:
A função a seguir calcula o fatoria
def fact(n):
if n == 0 or n == 1:
return 1
return fact(n-1) * n
def reduce_func(x,y):
return fact(x) * fact(y)
lst = [1, 3, 1]
print reduce(reduce_func, lst)
Agora, isso não deveria me dar((1! * 3!) * 1!) = 6
? Mas, em vez disso, dá720
. Por quê720
? Parece levar o fatorial de6
também. Mas preciso entender o porquê.
lguém pode explicar por que isso acontece e uma solução alternativ
Eu basicamente quero calcular o produto dos fatoriais de todas as entradas da lista. O plano de backup é executar um loop e computá-lo. Mas eu prefiro usar reduzir.