java - 递归函数响应不同的值

标签 java recursion

我编写了一个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/

相关文章:

减少内存占用的 Java 集

java - 如何使用模型类作为输入将输入参数传递给 Spring restful web 服务方法并执行 MySql 存储过程

java - 计算总和时结果错误

algorithm - 递增值的递归函数

javascript - 如何使用 jquery 递归地附加此树数据?

java - 如何在java非递归中搜索一般树中的节点

java - 使用 Android 收听广播

java - ksoap2 具有相似命名空间但类型不同的嵌套项

performance - 递归比循环快吗?

python - 递归函数-Collat​​z