我写了一个java递归函数来得到一个数字的总和,如下所示,总和也应该是单位数。我在这里面临的问题是应该返回else部分在结尾因为它是给之后如果其他条件return语句:响应不同值的递归函数
static int recSum(int n){
int sum = 0;
while(n!=0){
sum += n%10;
n = n/10;
}
if(sum>9) {
recSum(sum);
}
else {
return sum;
}
return sum ;
}
让我们假设N = 12345所以它需要返回5月底在那里,因为它是返回14.但是它会到其他部分,但正确的值不返回。我用三元运算符得到了解决方案,而没有其他循环。但想什么是我收到的14以前和这样做的原因,而5(5来自14 = 1 + 4)
欣赏这个
我不知道为什么在某些控制路径上放弃recSum的返回值。另请注意,Java函数参数是按值传递的。清楚地写下问题imho。我不明白downvote。 – Bathsheba
@ Umadhar,递归方法中的'while'循环正在使其迭代运行,并消除了递归的目的。检查我更正的答案。谢谢。 –
在'if'中,你计算'recSum(sum)',但从不对结果做任何事情。你的意思是把它的值赋给'sum'?请记住,Java是_never_传递引用,所以如果你调用'recSum(sum)',那么recSum调用中的'n'是'sum'的一个拷贝 - 并且不会像调用者那样修改它被关注到。 – yshavit