私はこの質問を解決する方法を理解しようとしていましたが、わかりません。私がmystery(2,25)
を取った場合、b
は==0
とb%2=1
ではないので、私はmystery(2+2, 25/2) + 2
を持っています。私は最後に+2
で何をするのかわかりません。a
とb
を追加するか、新しい値でコードをやり直すことになっているのか分かりません。Java再帰を解決するための助けが必要
mystery(2, 25)
との値はそれぞれ何ですか?選択する
public static int mystery(int a, int b) {
if (b == 0) return 0;
if (b % 2 == 0) return mystery(a+a, b/2);
return mystery(a+a, b/2) + a;
}
回答:bは0で、再帰呼び出しチェーンが終了するまで
33554432, 177147
525, 1331
50, 33
75, 44
は、鉛筆と紙を取得し、ステップを書き出します。完了したら再帰を理解するかもしれません。 – duffymo
IDEでデバッグしてください。したがって、コードをステップバイステップで実行し、変数が変化するのを見ることができます。 – vanje
この質問を残しましたか? – Vitorlui