エンジンによって制限されています。大多数の制限を超えます。これを緩和する自動最適もあります(“末尾再帰”)が、どこでもサポートされているわけではなく、単純なケースでのみ機能します。それは再帰の使用を制限しますが、依然として非常に広範囲に使われています。再帰的な考え方でコードがシンプルになり、保守が容易になるタスクはたくさんあります。実行スタックさて、どのように再帰呼び出しが動作するか検証してみましょう。そのためには関数の内部を見ていきます。関数の実行に関する詳細を含む内部のデータ構造です。値(ここでは使いませんが)や、その他いくつかの内部データを持ちます。1つの関数呼び出しには、それに関連付けられた実行コンテキストが1つだけあります。関数がネスト呼び出しをした場合、次のようなことが起こります:現在の関数が一時停止します。呼ばれる特別なデータ構造で記録されます。ネスト呼び出しを実行します。それが終わると、スタックから古い実行コンテキストが取り出され、停止した所から外部の関数が再開されます。呼ばれたとき、何が起きるのか見てみましょう。