编程中的新手 - 更有效的数字总和

时间:2013-02-20 16:48:15

标签: java performance

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

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

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

1 个答案:

答案 0 :(得分:5)

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

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

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