私は以下のアルゴリズムを持っています。目標は一連の数値の可能な順列をすべて見つけ、標識を切り替えることです。木の葉ノードに到達すると、リスト上で反復処理を行う別のメソッドを呼び出して、その順列の合計がシリーズ内の数値に等しいかどうかを確認します。また、シリーズのサブセットが与えられた数よりも少ないかどうかを調べるためのアルゴリズムを試しています。たとえば60,35,40という数字の場合、60 + 40 < 110です。問題は、ツリー内のブランチが必要なものであれば、他のブランチがまだ調査されていることです。どうやってこれを中断できますか?今、私が持っているすべては、上記を見るとsystem.exit(1);
実行を終了する前に値を返す再帰アルゴリズムを取得するにはどうすればよいですか?
public static int PlusMinus(Node start, Node node, int Sum){
Node head = start;
boolean Success = false;
if(node != null){
PlusMinus(head, node.next, node.item+Sum);
PlusMinus(head, node.next, node.item*(-1)+Sum);
return Sum;
}
else{
Success = getSum(Sum,start);
if(Success == true){
System.out.println("Yes");
System.exit(1);
return 1;
}
}
return 0;
}
で、私の本来の意図は、それが呼び出しプログラムにリーフノードの合計を返すようにしました。プログラムをステップ実行することからわかるように、右端の枝が正しい順列であれば、その葉ノードの戻り値で終了するだけではありません。それはまだ親に戻り、次のブランチのテストに進みます。
合計を返し、これらの2つのメソッドを呼び出すポイントは何ですか? – Natecat
制御フローに 'System.exit()'を使わないでください。それは非常に悪いデザインです。ユーザーは、そのメソッドが値を返すことを期待しますが、JVM全体を停止するわけではありません。 –