数字的数字乘积

Digit product of a number

我想练习编写一个函数(递归和迭代),通过乘以给定数字的 非零数字 .

来得出给定数字的乘积

例如:22 = 2x2 得到 4 和 303 = 3x3 得到 9

如果数字中有零,我在这里找到的大多数解决方案都不会真正起作用。

我尝试了以下使用迭代的方法,但仍然不明白如何使用递归方法对其进行编码。

def digitProductI(n):
    product = 1
    while n > 0:
        remainder = n%10
        if remainder != 0:
            product *= remainder
        n = n//10

    return product

如果你想让你的函数成为递归函数,你需要做一些事情:

  1. 函数调用自身
  2. 一个基本案例

对于您的函数,您可以使用新产品和 return 该值调用函数本身,而不是使用 while 循环。然后,为了防止 RecursionError,您应该添加一个基本情况,在本例中,如果 n <= 0,则为 returning n。编写此 inn 代码将如下所示:

def digitProductI(n):

    # This is the base case. If n is 0, it would return 1.
    if not n:
        return 1

    # If n is non-zero, we find the remainder and call the function again with the floor divided value.
    remainder = n % 10
    if remainder:
        product = remainder
    else:
        product = 1
    return product * digitProductI(n // 10)

这将产生与您的原始函数相同的结果。就像在您的函数中一样,零输入将产生 1 作为结果,并且俘虏零和尾随零将被忽略。