java.lang.stackoverflowerror递归错误

java.lang.stackoverflowerror error in recursion

我一直在尝试通过递归打印数字模式 4,5,9,18,34,但出现 java.lang.Whosebugerror 错误。这是我的代码供您参考。 任何帮助将不胜感激。 谢谢

public class pattern3 {
    public static void main(String[] args) {
        // TODO Auto-generated method stub
        pattern(4,0,5);
    }
        
    static void pattern(int n,int pos,int z) {
        if(pos==z) {
            return;
        }
        int a=(int) Math.pow(pos,2);
        int b=n+a;
         pattern(b,pos++,z);
         System.out.println(b);
            
    }
}

通过交换行 pattern(b, pos++, z);System.out.println(b);,您将看到 b 的值始终是 4。原因是 pos 的参数总是 0。后缀递增运算符(例如 pos++)递增值,但 returns 旧值 。由于 pos 的第一个参数是 0,因此 pos 的旧值将始终是 0.

您需要更改:

pattern(b, pos++, z);

收件人:

pattern(b, pos + 1, z);