我推出了这个Java代码来解决sumOfDigits。
public static int sumOfDigits(int num){
if (num == 0){
return 0;
}
return num%10+ sumOfDigits(num/10);
}
我知道这有效,但我希望有人能分享关于如何提高代码效率的见解或材料(一些正式的术语/知识),因为我知道Java不支持递归。
答案 0 :(得分:5)
递归在Java中根本不是一个糟糕的工具。当然,理论上每个函数调用都有成本,但JIT编译器通常能够在运行时自行优化它并提供良好的性能。你不应该优化一个明确用递归写入的函数,如果没有它会更麻烦,除非你真的遇到问题,但我怀疑你会有任何代码。根据经验,您将看到代码易读性非常重要。
要回答你的问题,实现你想要的另一种方法就是循环,直到num等于0并且每次将每10的除法结果存储在num中:
int total = 0;
while (num != 0) {
total += num % 10;
num = num / 10;
}