Python更好地表达这种递归函数

时间:2015-06-23 07:06:54

标签: python recursion

Python版本2.7.6

我编写了一个迭代函数,用于计算特定阶乘所预期的尾随零的数量。然后我尝试将其重写为递归函数。 这是递归结果:

def f_FactorialTailZeros(v_Num, v_Result = 0):
    if v_Num < 5:
        return v_Num
    v_Result = v_Result + f_FactorialTailZeros(v_Num // 5, v_Num // 5)
    return v_Result

print(f_FactorialTailZeros(30)) ## 7
print(f_FactorialTailZeros(70)) ## 16

它有效,但是,为了学习,还有更好的方法吗?

2 个答案:

答案 0 :(得分:3)

根据您的代码:

def f_FactorialTailZeros(v_Num):
    if v_Num < 5:
        return 0
    return v_Num // 5 + f_FactorialTailZeros(v_Num // 5)

答案 1 :(得分:2)

是的,你可以用递归函数来看看下面的代码和FYI阅读this

def recursive_trailingZeroes(A):
    if A==0:
        return 0
    return (A//5)+recursive_trailingZeroes(A//5)