首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >数字的数字乘积

数字的数字乘积
EN

Stack Overflow用户
提问于 2022-02-28 08:50:06
回答 1查看 262关注 0票数 0

我想练习写一个函数(递归和迭代),通过乘以它的非零位数,给出一个给定数字的乘积。

例如: 22 = 2x2,给你4,303 = 3x3,给你9。

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

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

代码语言:javascript
运行
复制
def digitProductI(n):
    product = 1
    while n > 0:
        remainder = n%10
        if remainder != 0:
            product *= remainder
        n = n//10

    return product
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2022-02-28 09:09:47

如果您想使您的函数成为递归函数,则需要以下几点:

  1. 函数自称为
  2. a base case

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

代码语言:javascript
运行
复制
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作为结果,而捕获零和尾随零将被忽略。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/71292487

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档