最新のコードでは、いくつかの再帰問題に遭遇することはありません。私は32桁のカスタム番号を追加したり引いたりしています。数字は配列に格納されます。32桁の数字を加算したり減算したりしてStackOverflowErrorを回避する
ここに私の問題を説明するためのコードのビットです:addメソッドで
public Custom subtract(Custom e) {
if (isPositive(this) && (!isPositive(e))) {
return add(temp);
}
:
if (isPositive(this)) {
if (!isPositive(e)) {
if (this.e.array.length >= e2.array.length) {
return subtract(e);
問題があり、長さは常に一定となり、符号は常になります渡されたパラメータに対しても定数です。私は、各カスタムオブジェクトのコピーを作成し、加算または減算を満たすように符号を変更するのが最善の策だと考えていますが、既存の正しい値を上書きします。誰にもアドバイスはありますか?
無限ループがあります。あなたのaddは常に 'subtract'を呼び出し、subtractは常に' add'を呼び出します。例えば、あなたのカットされたものが実際に多くの意味をなさないようであれば、 'negate()'メソッドを導入するなど、どこかでそれを止めるべきです。たとえばBigDecimalのJDK実装を見てください。 –
これらのメソッドが存在する「カスタム番号」クラス(「カスタム」)全体が表示されていません。クラス全体を見ることなく、私たちはあなたを助けることができません。 –
私は基本的に数字を区別することに問題があります。したがって、arrayOneは[7]、length1のようになります。arrayTwoは[-6]、長さ1になります。arrayOneとarrayTwoを追加すると、私は減算メソッドを呼び出します。しかし、もし私がarrayTwo - arrayOneをしなければならない。私は実際にaddメソッドを呼び出すことになります。私の無限の再帰があります。 – esmith08734