bool palindrome(char input[], int siz, int start){
// siz = size of the array ,start =starting point of the array ie 0
if(input[start] == '\0') {
return true;
} else if(input[start] == input[siz - start - 1]) {
return true;
palindrome(input, siz, start + 1);
} else {
return false;
}
}
我试图使用这个递归函数来找到回文字符串,但是代码输出术语<code>alia
这部灵魂作品:
#include <iostream>
bool isPalindromeRecursive(char* string, int begin, int end)
{
if (begin == strlen(string) / 2) // There is no point in comparing chars past half of the string lenght
{
return true;
}
// Is the first char the same as the last char? <-- we call recursion based on that statement
return tolower(string[begin]) == tolower(string[end]) && isPalindromeRecursive(string, ++begin, --end);
}
bool isPalindrome(char* string)
{
return isPalindromeRecursive(string, 0, strlen(string)-1); // Let's ignore the null char (strlen(string)-1)
}
int main()
{
std::cout << isPalindrome("hooh") << std::endl;
}
您的问题是,在再次执行函数之前,您正在退出该函数。现在你有
else if(input[start]==input[siz-start-1])
{
return true;
palindrome(input,siz,start+1);
}
相反,尝试
else if(input[start]==input[siz-start-1])
{
palindrome(input,siz,start+1);
}
然后在函数末尾,添加
return true;
编辑:
我测试了它,它对我来说很好,这是完整的代码:
#include <iostream>
bool palindrome(char input[],int siz,int start){
//siz =size of the array ,start =starting point of the array ie 0
if(input[start]=='\0')
{
return true;
}
else if(input[start]==input[siz-start-1])
{
palindrome(input,siz,start+1);
}
else
{
return false;
}
return true;
}
int main()
{
char racecar[] = "racecar";
if (palindrome(racecar, 7, 0))
{
std::cout << "It's a palindrome!" << std::endl;
}
else
{
std::cout << "It's not a palindrome." << std::endl;
}
char abba[] = "abba";
if (palindrome(abba, 4, 0))
{
std::cout << "It's a palindrome!" << std::endl;
}
else
{
std::cout << "It's not a palindrome." << std::endl;
}
return 0;
}
问题内容: 我正在尝试查找字符串中字母的首次出现。例如,苹果中的p应该返回1。这是我拥有的: 它似乎似乎没有返回正确的值。 问题答案: 您的尝试很好,但是还不够。这是基于您的正确实现: 您的尝试存在两个问题: 在这一部分中,您已经找到了角色,因此正确的做法是停止递归,但您仍在继续。 在最后一个return语句中,您需要在递归调用中加1(如果最终找到了该字符),作为累加总索引号的一种方式。
我是Python的超级新手,并试图创建一个非常简单的函数,用于更大的地图着色程序。 该函数的思想是将一组变量归于不同的区域(string1),并将颜色分配给它们(r、g、b),然后通过递归地查看一组区域边界(string2)来测试这些区域是否接触到相同颜色的另一个区域,以找到匹配的变量颜色。 输入格式如下:("Ar, Bg, Cb","AB, CB, CA")将返回True,这意味着没有相同颜色的
问题内容: 如何递归地查找字符串中最长的单词? 编辑 说完了,谢谢大家。这是修改后的代码。 问题答案: 首先,让我们假设句子字符串参数没有任何前导或尾随空格。您可以通过调用trim()来处理递归情况。 然后,我们需要定义两种情况,即基本情况和递归情况。 基本情况是找不到空格,即传入的句子只是一个单词。在这种情况下,只需返回句子即可。 在递归的情况下,我们将得到第一个单词,其余的则与您一样。在句子的
问题内容: 这就是我所拥有的: 但我想搜索src的子文件夹。这样的事情会起作用: 但这显然是有限且笨拙的。 问题答案: Python 3.5+ 由于你使用的是新的python,因此应pathlib.Path.rglob在pathlib模块中使用。 如果你不想使用pathlib,只需使用,但不要忘记传递recursive关键字参数。 对于匹配文件以点(。)开头的情况;例如当前目录中的文件或基于Uni
问题内容: 我想递归搜索带有文本文件子目录的目录,并用多行字符串的内容替换文件中每次出现的{$ replace}。如何用python实现? [编辑] 到目前为止,我所拥有的只是使用os.walk的递归代码,以获取需要更改的文件列表。 问题答案: 签出os.walk: 上面的解决方案有缺陷,例如实际上会打开它找到的每个文件,或者实际上将每个文件都读到内存中(如果您有1GB的文本文件,那就不好了),但
本文向大家介绍C#程序使用递归查找数字的数字总和,包括了C#程序使用递归查找数字的数字总和的使用技巧和注意事项,需要的朋友参考一下 假设我们已经设置了可以找到数字总和的数字- 以下将通过输入数字并递归检查来找到数字总和- 示例 以下是我们的代码,用于在C#中使用递归来查找数字的总和。 输出结果