我需要使用递归计算一个玩家得到多少奖牌,例如,如果我输入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)
尝试通过该函数进行跟踪,看看会发生什么:
countMedals(3) returns countMedals(3 + 2 + 3)
countMedals(8) returns countMedals(8 + 7 + 8)
Run Code Online (Sandbox Code Playgroud)
这将持续增长,永远不会达到0的基本情况.
| 归档时间: |
|
| 查看次数: |
200 次 |
| 最近记录: |