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);
我一直在尝试通过递归打印数字模式 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);