python-3.x - 使用递归的数字的奇数和偶数之和
问题描述
我目前设置了一个添加数字的偶数或奇数的代码。但是当我运行它时,它不会添加所有数字。
我知道应该使用模数 (%) 和浮点除法 (//),但我不能继续下去。我只想使用递归和while循环,因为我还没有学习for循环。
def sum_even_digits(number):
if number == 0:
return 0
remainder = number % 10
if remainder % 2 == 1:
return 0
if remainder % 2 == 0:
return number % 10 + sum_even_digits(number // 10)
def sum_odd_digits(number):
if number == 0:
return 0
remainder = number % 10
if remainder % 2 == 0:
return 0
if remainder % 2 == 1:
return number % 10 + sum_even_digits(number // 10)
例如,我预计 256 的偶数和是 8,但它只给出 6。
解决方案
你的错误是在你的第二种情况下,当余数不是你想要求和的那种数字时,你不应该返回 0。返回 0 意味着不检查数字的其余部分,它仍然可能包含偶数/奇数位。您应该忽略其余部分并继续递归:
def sum_even_digits(number):
if number == 0:
return 0
remainder = number % 10
if remainder % 2 == 1:
return sum_even_digits(number // 10) # note this line
if remainder % 2 == 0:
return remainder + sum_even_digits(number // 10)
推荐阅读
- wireshark - 执行 tshark 时如何隐藏终端上显示的数据?
- javascript - 由于脚本冲突而删除多余的空白打印页
- c++ - 为什么不能用另一个指向 const char 的指针来初始化指针?
- javascript - 即使使用 async 和 in 函数变量,JavaScript 函数也会返回 undefined
- sql - 优化派生子查询性能将不同的记录拉入 group_concat()
- git - 关于 git force push
- html - 使用 css 更改背景图像的颜色
- python - 如何在 python 中打开、删除列和保存 xls 文件
- javascript - inDesign 脚本更新数据合并的数据源
- python - Visual Basic 类似于 Python 的 GUI,带有文本框和标签数组