在 Turbo C++ 中,可以将普通递归函数转换为尾递归来优化它吗?
In turbo c++ can a normal recursive function converted as tail-recursive to optimize it?
我正在使用普通递归函数在 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;
}
希望对您有所帮助。
我正在使用普通递归函数在 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;
}
希望对您有所帮助。