带有一个return语句的Java递归

DCR*_*DCR 5 java recursion

是否可以在Java中使用一个return语句将数字1到n递归相加?您将如何更改标准解决方案:

public static int sum(int n) {
   if(n == 1) return n;
    else return n + sum(n - 1);
}
Run Code Online (Sandbox Code Playgroud)

Gré*_*mer 13

return n == 1 ? n : n + sum(n-1);
Run Code Online (Sandbox Code Playgroud)


Lin*_*ica 6

您可以使用简单的数学而无需递归:

public static int sum(int n) {
   return n * (n + 1) / 2;
}
Run Code Online (Sandbox Code Playgroud)

  • 如果要消除除法,请使用`>> 1'。不过没有必要。编译器将自行进行此简单的优化。利用整数溢出很奇怪。 (2认同)