私の友人と私は、宿題のために分析しなければならなかったアルゴリズムが末尾再帰であるかどうかについて議論していましたが、彼はそうであると主張しました。したがって、アルゴリズムは次のようになります。
SomeAlgo(x)
{
x--;
if (x > 1)
{
SomeAlgo(x);
}
else
{
return x;
}
}
SomeAlgo(x) が実行される最後のステートメントではないため、末尾再帰ではないことを彼に伝えました。基本ケースが必要ですが、必要ありません。基本ケースがある場合、基本ケースのコードが最初に実行され、それ自体への呼び出し (返される値を返す) が最後になります。
末尾再帰でない場合、末尾再帰にするために何をする必要があるか教えてもらえますか?