代码之家  ›  专栏  ›  技术社区  ›  vivek kumar

在turbo c++中,一个正常的递归函数可以转换为尾部递归函数来优化它吗?

  •  1
  • vivek kumar  · 技术社区  · 9 年前

    我使用普通递归函数在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);
     }
    
    1 回复  |  直到 9 年前
        1
  •  -1
  •   Sumit Chourasia    9 年前

    我用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;
    }
    

    希望这对你有所帮助。