functional-programming - algorithm - テールリカーションとは何ですか?

algorithm / language-agnostic / recursion / tail-recursion

lispを学び始めている間、私は末尾再帰という用語に出くわしました。正確にはどういう意味ですか?

10 revs, 7 users 50%



Answer #1

一般的に再帰においては、再帰呼び出しを停止し、コールスタックのポップを開始するベースケースがあります。LispというよりはC言語っぽいですが、古典的な例を挙げれば、階乗関数が末尾再帰を示しています。ベースケースの条件をチェックした後に再帰呼び出しが発生します。

factorial(x, fac=1) {
  if (x == 1)
     return fac;
   else
     return factorial(x-1, x*fac);
}