尾の再帰とは何ですか?
Tail Recursionは、メソッドがそれ自体を呼び出すプログラミングメソッド呼び出しの一種で、すぐにその2番目の呼び出しの値を返します。言い換えれば、メソッド内の最終ステートメントが同じメソッドの別の呼び出しである場合、テール再帰が発生します。 2番目のメソッド呼び出しのパラメーターは、一般に最初のパラメーターとは異なりますが、これは必須ではありません。この再帰が機能するためには、それ自体内で呼び出される方法は、数字、文字列、または他のオブジェクトなどの具体的な値を返す必要があります。値を返さない無効な方法は、再帰のためにうまく機能しません。
再帰呼び出しが呼び出し方法の最後のステートメントでなければならないという要件は、必ずしも再帰コールがメソッドの最後の行であることを意味するわけではありません。適切なテール再帰コールは、制御構造内にも見つけることができます。つまり、ソースコードでは、コントロール構造が通話ではなくメソッドを終了する可能性があります。この場合の重要な区別は、COがNTROL構造はプログラミングステートメントではなく、コンピューター言語の組み込みの一部です。多くの場合、これらの再帰呼び出しは、ループ、ループ、またはgotoステートメントなど、他の手段を使用して書き直すことができます。再帰の有用性は、同じ方法に多くの連続した呼び出しを作成するときに見つかります。再帰は、多くの場合、繰り返しのタスクを達成するための最もクリーンで最も簡単な方法です。
尾の再帰の一般的な例は、数の因子を計算する方法です。このプロセスは、任意の数から始めて、それが掛ける前にすべての数値を開始するため、理想的です。したがって、5の要因を見つけるために、それを行うための適切なプロセスは、5*4*3*2*1を掛けることです。要因方式がどのように構造化されているかにより、再帰が登場します。要因が1の場合、1を返し、それ以外の場合は数gの要因を返しますメソッドを引いたメソッドにiven。この方法は、最終的なメソッド呼び出しに関する制御ステートメントの有無にかかわらず、いずれかのタイプのテール再帰を使用して同等に記述できるため、有用です。
尾の再帰は、複数のタイプの再帰のほんの一例にすぎません。あらゆる種類の再帰の概念は、本質的に同じであり、ある方法でメソッドがそれ自体を呼び出すということです。これらのタイプのうち、尾の再帰の区別は、再帰呼び出しの値がすぐに返され、その呼び出し後の呼び出し方法では他に何も起こらないことです。