这里是我想出了为了履行一个字符串复制每个字母的要求(即“ABC”,以“为aabbcc”)递归函数:在C++中做了递归函数。现在要求做一个“尾递归”功能
#include <string>
#include <iostream>
using namespace std;
string repeater(string str){
if (str == ""){
return "";
}
else{
return str.substr(0,1) + str.substr(0,1) + repeater(str.substr(1));
}
}
int main(){
string test = "llama";
cout << "repeater(\"" << test << "\") returned: " << repeater(test) << endl;
}
现在我被要求做一个“尾递归”函数来做同样的事情。我读了它,我的文字给人以“尾递归”功能的下面的例子:
int factorial(int n) {
if (n == 0)
return 1;
else
return n * factorial(n – 1);
}
这看起来与我用来创建我自己的方法。我需要递交递归函数的两个版本。我的已经是“尾递归”函数了吗?如果是这样,我将如何做一个前向递归函数(或者,如果情况正好相反,反之亦然)?
尾递归只是做递归调用的返回。在示例代码中,返回值乘以n,所以它不是尾递归。 – rcgldr
我的文字错了吗?或者我读错了吗? http://postimg.org/image/jqqxd91xv/ – velkoon
看看这里的例子[尾递归](http://cs.stackexchange.com/questions/6230/what-is-tail-recursion)。 – rcgldr