我编写了一个java递归函数来获取数字的总和,如下所示,总和也应该是个位数。我在这里面临的问题是它应该返回末尾的else部分,因为它给出了if else 条件返回语句之后:
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。然而,它会转到 else 部分,但没有返回正确的值。我用三元运算符得到了解决方案,没有 else 循环。但想知道这是什么原因,我得到了之前的总和 14 而不是 5(5 来自 14 = 1+4)
感谢对此的回应
最佳答案
您应该做的更改非常简单:您应该删除最后一个 return
语句并仅返回递归调用的结果:
static int recSum(int n){
int sum = 0;
while(n!=0){
sum += n%10;
n = n/10;
}
if(sum>9) {
return recSum(sum);
}
else {
return sum;
}
}
关于java - 递归函数响应不同的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43479643/