带递归的StackOverflowError

The*_*bbs 2 java stack-overflow recursion compiler-errors exception

谁能告诉我为什么我会收到这个错误?这真让我烦恼.我想要做的是找到表达式2 ^ k +1的总和,因为k的范围从1到n.

import java.util.*;

public class mySums
{
private static double n;

public static void main(String[] args)
{
    recurSum(4);
    System.out.println();
}

/*  public static void iterativeSum (int num)
{

}
*/
public static double recurSum (double num)
{
    if (n==1){
      return 1;}
    else {
      return (Math.pow(2.0, n) +1) + recurSum(n-1);}
}
}
Run Code Online (Sandbox Code Playgroud)

谢谢.

das*_*ght 6

这是因为你使用的是n代替num你的recurSum.n是一个永不改变的静态变量; 你应该删除它.num另一方面,是您传递给的参数recurSum; 当你降低递归调用的级别时,它的值会降低,最终会命中1并让你退出:

public static double recurSum (double num) {
    if (num==1) {
        return 1;
    } else {
        return (Math.pow(2.0, num) +1) + recurSum(num-1);
    }
}
Run Code Online (Sandbox Code Playgroud)