gpt4 book ai didi

c++ - 如何使用递归 char * 函数在 C++ 中反转字符串

转载 作者:太空狗 更新时间:2023-10-29 23:14:32 24 4
gpt4 key购买 nike

为了全面披露,这是一项家庭作业。

我需要使用只接受“char *string”输入的递归函数来反转 char 字符串

我已经进行了大量的谷歌搜索和诸如此类的工作,但似乎无法弄清楚。如果我可以使用 void 函数,这将在数小时前完成,但遗憾的是,这是不允许的。

以下代码不返回任何内容,我们也不允许更改函数签名

char *reverseString(char *string)
{

if (*string =='\0') return string;

else
{
return reverseString(string + 1) + *string;
}

}

这是我多次尝试从 main 调用此函数以从中获取输出,尽管代码运行了,但我在控制台中没有得到任何输出

char Tstring[] = "TestString";
cout << reverseString(Tstring);
cout << *reverseString(Tstring);
char *answer2 = reverseString(Tstring);
cout << *answer2;

显然,我并不是在寻求直接的解决方案,但我在思考如何使用指针作为输入和诸如此类的东西来解决这个问题时遇到了麻烦。对正确方向的任何提示或插入表示赞赏

最佳答案

您不能使用加号运算符连接 char* 指针。

如果允许的话,我宁愿采用就地方法。不想在这里说太多,但是你可以在不访问字符串之外的任何内存的情况下反转字符串。然后您的递归可以传递指针。

你可能需要一个辅助函数

void reverse(char *start, char *end)

你正在从你的主要算法中调用。

edit:这将是一个递归解决方案,但递归调用将是辅助函数而不是主函数。不知道你的作业中是否允许这样做。可能还有一种方法可以使它在 main 函数上递归,但那会更复杂。

关于c++ - 如何使用递归 char * 函数在 C++ 中反转字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33342179/

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