我试图实现一个函数,该函数返回一个自然数,该自然数是输入的自然数内数字的总和。我只是不断陷入无限循环。我知道我必须返回递归调用,但我无法弄清楚。这是我到目前为止所拥有的:

private static NaturalNumber sumOfDigits(NaturalNumber n) {
        NaturalNumber zero = new NaturalNumber2(0);
        if (n.compareTo(zero) == 0) {
            return zero;
        } else {
            NaturalNumber z = new NaturalNumber2(n.divideBy10());
            n.divideBy10();
            z.add(sumOfDigits(n));

         // return ___;

        }
    }


我应该返回什么?返回z无效

最佳答案

您正在使用n(与您的过程中传递的数字相同)进行递归调用。如果删除z的数字,则必须使用其余数字进行递归调用。

您可以使用mod 10去除数字,然后除以10得到其余数字。如果您使用的是整数,则为:

return (n % 10) + sumOfDigits(n / 10);

10-04 19:53