私は再帰がどのように機能するか少し考えています。以前に呼び出された関数によって返された値を格納するために使用されるスタックによって提供される変数に関する呼び出しと異なるコンテキスト。この再帰関数でリンクされたリスト要素を逆順に印刷する際に、再帰はどのように機能しますか?
例えば、
void Factorial(int n)
{
if(n==0) return 0;
else if(n==1) return 1;
else
{
return n*Factorial(n-1);
}
}
所定数の階乗を計算するため、私は、与えられたNを想定するための最初の呼び出しは、5である5 *階乗(4 *階乗(あろうことを知っています3 ...などの基本条件に達するまで)、1 * 2 * 3 * 4 * 5 = 240のような値を合計した順番にトラバースします。
私が理解していないのは、単一リンクリストの項目を逆順に印刷するコードです。
void ReversePrint(Node head) {
if(head==null)
{
return;
}
else
{
ReversePrint(head.next);
System.out.println(head.data);
}
}
限りヘッドは、それが他の状態に行くと頭が対等になるnullではないので、私は、リンクリスト機能のような作品に有限個の要素がある
まず、 を与え知っているようにそれがnullになるまでhead.nextに移動します。そして何?
私は正確な言葉で私の問題を表現していないかもしれません。あなたが説明することを願っています。前もって感謝します。
私はその質問の少なくとも543重複があると思う... –
ええ、誰も私の質問に答えるようです。もしそうなら、なぜ再び尋ねるのが気になる? –