3

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

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

好吧,我知道这是可行的,但我希望任何人都可以分享有关如何提高代码效率的见解或材料(一些正式的术语/知识),因为我知道 Java 不支持递归。

4

1 回答 1

5

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

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

int total = 0;
while (num != 0) {
    total += num % 10;
    num = num / 10;
}
于 2013-02-20T17:07:27.953 回答