【发布时间】:2020-12-28 02:49:34
【问题描述】:
我一直在开发一个创建有理数的程序,当我调用这些方法中的任何一个时,我都会从递归中得到堆栈溢出。
public Rational(){
new Rational(0,1);
}
public Rational(int n){
new Rational(n,1);
}
public Rational(int numerator, int denominator){
new Rational(numerator,denominator);
}
谁能解释一下为什么这些方法会无限递归?
【问题讨论】:
-
因为您的构造函数尝试创建一个新对象,然后创建另一个对象,这......
-
首先没有数学。你不想要分子/分母吗?你什么时候停下来?您正在调用 new Rational(numerator,denominator);一遍又一遍。
-
另外这绝对不是你委托构造函数调用的方式,你是从哪里学会这样写构造函数的?