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

时间:2015-02-16 09:41:26

标签: c++ recursion turbo-c++

我使用普通递归函数在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 个答案:

答案 0 :(得分:-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;
}

希望这会对你有所帮助。