これは宿題の質問ではありません。私は自分自身の教化のプロセスを理解しようとしているだけです。私はコンピュータ サイエンスの学生として、再帰の概念が議論されたいくつかの講義に出席しました。しかし、私の意見では、講師は、スタック フレームの概念と、最終的な値を計算するためにコール スタックがどのようにトラバースされるかに関して、少しあいまいでした。私が現在想像しているプロセスの方法は、ツリーをトップダウンで構築することに似ています (項目をコール スタックにプッシュする - 後入れ先出しのデータ構造)。頂上に到達。おそらく標準的な例:
def fact(n):
if n == 0:
ans = 1
else:
ans = n * fact(n-1)
return ans
value = fact(5)
print (value)
上で示したように、コール スタックは最終的に次の (大雑把に) 描かれた図に似ていると思います。
+----------+
| 5 |
| 4 |
| 3 |
| 2 |
| 1 |
+----------+
各数値はスタック フレーム内に「囲まれ」、制御は下 (1 の値) から 2、3 のように進みます。ただし、オペレーターがプロセスのどこに存在するかは完全にはわかりません。ある時点で抽象構文木 (AST) が関与していると想定するのは間違いでしょうか? それとも演算子を含む 2 番目のスタックが存在するのでしょうか?
助けてくれてありがとう。
〜ケイトリン
編集:「再帰」タグを削除し、「関数」および「スタックフレーム」タグを追加しました。