我试图实现一个返回自然数的函数,该数字是输入的自然数中的数字之和 . 我只是继续无限循环 . 我知道我必须返回递归调用,但我无法弄清楚这一点 . 这是我到目前为止:
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 回答
您正在使用n进行递归调用,该数字与传递到您的过程中的数字相同 . 如果剥离z的数字,则必须使用其余数字进行递归调用 .
您可以使用mod 10剥离数字,然后除以10得到其余数字 . 如果您使用整数,它将是:
z.add(sumOfDigits(n));
应为z.add(sumOfDigits(n.divideBy10()));
. 重点在于递归,你只想处理答案的其余部分,而不是整个问题 .