具有递归(n +(n-1)+ n)错误的公式

spt*_*Bot 0 java recursion

我需要使用递归计算一个玩家得到多少奖牌,例如,如果我输入3,玩家获得8枚奖牌[Ex1.(3 +(3-1)+3)=(3 + 2 + 3)= 8]/[Ex2.(5+(5-1)+5)=(5 + 4 + 5)= 14]当我在主方法上输入1来测试它有效但当我更改一个大于1的数字时它崩溃了我得到红色字母作为错误这是我得到的错误.我已经完成了大约5种递归方法,但我仍然坚持这一方法.

java.lang.StackOverflowError
    at RecursiveFunctions.countMedals(RecursiveFunctions.java:87)
Run Code Online (Sandbox Code Playgroud)
public class RecursiveFunctions{
        public static int countMedals(int n){
            if(n==0){
              return 1+(1-1)+1;
            }
            else{
              return countMedals((n)+(n-1)+(n));
            }

     public static void main(String[] args){
    System.out.println("Number of Medals: " + RecursiveFunctions.countMedals(3));
      }
}
Run Code Online (Sandbox Code Playgroud)

Nat*_*han 6

尝试通过该函数进行跟踪,看看会发生什么:

countMedals(3) returns countMedals(3 + 2 + 3)
countMedals(8) returns countMedals(8 + 7 + 8)
Run Code Online (Sandbox Code Playgroud)

这将持续增长,永远不会达到0的基本情况.