gpt4 book ai didi

c++ - 用C++做了一个递归函数。现在要求制作一个 "tail-recursion"函数

转载 作者:太空宇宙 更新时间:2023-11-04 13:25:18 26 4
gpt4 key购买 nike

这是我想出的一个递归函数,用于满足复制字符串中每个字母的要求(即“abc”到“aabbcc”):

#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);
}

这看起来与我用来创建自己的方法相同。我需要交2个版本的递归函数。我的已经是“尾递归”函数了吗?如果是这样,我将如何制作前向递归函数(或者,如果情况相反,反之亦然)?

http://ideone.com/JrtRsE

最佳答案

我建议如下:

string tail_repeater(string left, string right){
if (right == ""){
return left;
}
return tail_repeater(left + right.substr(0,1) + right.substr(0,1), right.substr(1));
}

string repeater(string str){
tail_repeater("", str);
}

关于c++ - 用C++做了一个递归函数。现在要求制作一个 "tail-recursion"函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33579350/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com