python - 通过递归仅获取数字中的奇数位
问题描述
所以我的问题是我有一个像 123 这样的数字,并且倾斜 sugests 我希望结果是 13。
问题是,首先使用 im 的方法我会得到反转结果(例如 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)
解决方案
看看最后一行的操作,如果它是奇数,你得到最后一个数字,然后将它乘以 10 并将其添加到下一次调用的递归结果中,我相信这就是它不起作用的原因,试试下面的代码,here您总是在末尾附加最后一位数字,因此最终数字的顺序正确。
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 * apenas_digitos_impares(n // 10) + (n % 10)
推荐阅读
- android - FirebaseRecyclerAdapter() : 适配器为空
- r - 如何使用 cmd 和日志文件在任务计划程序中调试此计划的 .bat 任务?
- angular - Angular 8,如何从外部服务器加载模块/组件
- ios - 如何在 AudioKit 输出中动态更改播放器
- azure - Snowflake - 调用“CREATE NOTIFICATION INTEGRATION”会产生神秘错误
- c# - 在 JSON 类型不匹配时引发自定义异常 ASP.NET Core
- javascript - 如果域相同,则在现有选项卡中打开的电子邮件链接
- php - php搜索框结果显示不正确?
- graph - 使用边缘数据计算下游的最佳方法
- awk - 当其中一个是管道字符时使用多个分隔符