所以我的问题是,我有一个像123这样的数字,作为倾斜度,我希望结果是13
问题是,首先,我使用的方法是,我将得到一个倒数结果(例如31),其次,我在末尾得到一个不应该存在的零,而不是将数字相加,我不明白为什么。顺便说一句,我不能使用字符串
因此,为了澄清:
我的输出:
>>> apenas_digitos_impares(123)
40
正确输出:
>>> apenas_digitos_impares(123)
13
节目:
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)
我的意思是,如果python是您想要解决方案的地方,那么只需执行
它是python,您不局限于使用纯数学。此外,这种方式允许您轻松选择一个不是10的基,并从该新基的表示中提取值
看看最后一行的操作,如果它是奇数,则得到最后一个数字,然后将其乘以10,并将其添加到下一次调用的递归结果中,我相信这就是它不起作用的原因,请尝试下面的代码,这里您总是在末尾追加最后一个数字,以便最终的数字以正确的顺序出现
你可以这样做-
输出:
代码所需的唯一更改是在函数的最后一行
您将只包括奇数数字(由
n%10
完成)和继续(或递归)检查剩余的数字。您需要将下一个数字乘以10,所以-
10*apenas_digitos_impares(n//10)
相关问题 更多 >
编程相关推荐