我想出了这个 Java 代码来解决 sumOfDigits。

 public static int sumOfDigits(int num){
        if (num == 0){
             return 0;
        }
        return num%10+ sumOfDigits(num/10);
    }

嗯,我知道这行得通,但我希望任何人都可以分享有关如何提高代码效率的见解或 Material (一些正式的术语/知识),因为我知道 Java 并没有那么好地支持递归。

最佳答案

递归在 Java 中根本不是一个坏工具。当然,理论上每个函数调用都有成本,但 JIT 编译器通常能够在运行时自行优化并提供良好的性能。您不应该优化一个明确用递归编写的函数,如果没有它,另一个函数会更麻烦,除非您真的遇到问题,但我怀疑您是否会使用该代码。根据经验,您会发现代码易读性非常重要。

要回答您的问题,实现您想要的另一种方法是简单地循环直到 num 等于 0 并每次将每 10 除法的结果存储在 num 中:

int total = 0;
while (num != 0) {
    total += num % 10;
    num = num / 10;
}

关于java - 编程新手 - 更有效的数字总和,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/14985339/

10-11 22:33
查看更多