首页 > 解决方案 > 使用递归的数字的奇数和偶数之和

问题描述

我目前设置了一个添加数字的偶数或奇数的代码。但是当我运行它时,它不会添加所有数字。

我知道应该使用模数 (%) 和浮点除法 (//),但我不能继续下去。我只想使用递归和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。

标签: python-3.x

解决方案


你的错误是在你的第二种情况下,当余数不是你想要求和的那种数字时,你不应该返回 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)

推荐阅读