自然数使用递归的数字总和

时间:2013-10-16 19:02:22

标签: java recursion

我试图实现一个函数,该函数返回一个自然数,它是输入的自然数中的数字之和。我只是继续无限循环。我知道我必须返回递归调用,但我无法弄清楚这一点。以下是我到目前为止的情况:

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不起作用

2 个答案:

答案 0 :(得分:1)

您正在使用n进行递归调用,该数字与传递到您的过程中的数字相同。如果剥去z的数字,则必须使用其余数字进行递归调用。

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

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

答案 1 :(得分:0)

z.add(sumOfDigits(n));应为z.add(sumOfDigits(n.divideBy10()));。重点在于递归,你只想处理答案的其余部分,而不是整个问题。