我使用普通递归函数在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);
}
答案 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;
}
希望这会对你有所帮助。