数字的数字乘积
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
如果你想让你的函数成为递归函数,你需要做一些事情:
- 函数调用自身
- 一个基本案例
对于您的函数,您可以使用新产品和 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 作为结果,并且俘虏零和尾随零将被忽略。
我想练习编写一个函数(递归和迭代),通过乘以给定数字的 非零数字 .
来得出给定数字的乘积例如: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
如果你想让你的函数成为递归函数,你需要做一些事情:
- 函数调用自身
- 一个基本案例
对于您的函数,您可以使用新产品和 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 作为结果,并且俘虏零和尾随零将被忽略。