在turbo c++中,可以将一个普通递归函数转换为尾递归函数来对其进行优化

In turbo c++ can a normal recursive function converted as tail-recursive to optimize it?

本文关键字:递归函数 转换 优化 一个 c++ turbo      更新时间:2023-10-16

我正在使用普通递归函数在c++中创建一个阶乘程序。如果输入值很大,我想将其转换为尾部递归,以防止堆栈溢出。如何将普通递归转换为尾部递归?

// An example of tail recursive function
void print(int n)
{
   if (n < 0)  return;
   printf(" %d",n);
    // The last executed statement is recursive call
    print(n-1);
 }

我在c++中编写了一个示例尾部递归函数

#include<iostream>
using namespace std;
// tail recursion
unsigned factTR(unsigned int num, unsigned int count)
{
    if (num == 0)  return count;
    return factTR(num-1, num*count);
}
// factTRecurive
unsigned int fact(unsigned int n)
{
    return factTR(n, 1);
}
// calling function
int main()
{
   cout << fact(8);
   return 0;
}

希望这对你有帮助。