私はまだそれが実際にここでどのように働くか、古代の問題ハノイ再帰の塔を理解するのに問題があります。私は理論的にそれを読んだが、私はまだ再帰がここでどのように呼び出されているかは分からない。私が与える理由再帰についての説明が必要ですか?
public static void main(String[] args) {
// TODO Auto-generated method stub
Scanner s = new Scanner(System.in);
System.out.println("Input the number of rings");
int rings = s.nextInt();
move(rings, 'A', 'B', 'C');
}
public static void move(int rings, char x, char y, char z){
if(rings > 0){
move(rings - 1, x, z, y);
System.out.println("Move ring " + rings + " from peg " + x + " to " + y + ".");
move(rings - 1, z, y, x);
}
}
:誰がリングiの値が再帰が、それは自分自身を呼び出すことを知っている一般的には2
であれば元のために起こっているが、ここで私は立ち往生何各ステップを説明することができますリング値1の場合は、次の行に直接移動します。
System.out.println("Move ring " + rings + " from peg " + x + " to " + y + ".");
ありがとうございます。
-move方法は-the条件が満たされたリング= 1
と呼ばれている(1> 0が真であるため)ので、移動と呼ばれる。
あなたがここで何を求めているのかよく分かりません。 move(0、 'A'、 'C'、 'B')は何もしません(if条件に失敗します)。その後、出力行を呼び出します。あなたの質問を明確にすることはできますか? –