通过递归仅获取数字中的奇数位

2023-12-08

所以我的问题是我有一个像 123 这样的数字,正如标题所示,我希望结果是 13。

问题是,首先,我使用的方法将得到反转结果(例如 31),其次,我在末尾得到一个不应该存在的零,而不是加入数字,而是将它们相加,我不明白为什么。顺便说一句,我不能使用字符串

所以澄清一下:

我的输出:

>>> apenas_digitos_impares(123)
40

正确输出:

>>> apenas_digitos_impares(123)
13

program:

def apenas_digitos_impares(n):
    if n == 0:
        return 0
    elif (n%10)%2 == 0:
        return apenas_digitos_impares(n//10)
    elif (n%10)%2 == 1:
        return 10*(n%10) + apenas_digitos_impares(n//10)



你可以这样做 -

def apenas_digitos_impares(n):
    if n == 0:
        return 0
    elif (n%10)%2 == 0:
        return apenas_digitos_impares(n//10)
    elif (n%10)%2 == 1:
        # Include the digit and recurse for remaining...
        return (n%10) + 10*apenas_digitos_impares(n//10)
        
print(apenas_digitos_impares(123))

OUTPUT :

13

您的代码需要的唯一更改是函数的最后一行。

  • 您只需包含奇数位(由n%10) and,

  • 继续(或递归)检查剩余的数字。您需要将下一个数字乘以 10,所以 -10*apenas_digitos_impares(n//10)

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

通过递归仅获取数字中的奇数位 的相关文章

随机推荐