Javascript 使用递归计算回文数

Javascript 使用递归计算回文数,javascript,function,recursion,palindrome,Javascript,Function,Recursion,Palindrome,我目前有一个计算给定字符串中回文数的代码,在我使用“appal”测试它之前,它运行良好。当函数返回2(appa和pp)时,它返回0。如果有人能够编辑我当前的代码,使其满足该要求,我将不胜感激,谢谢! 这是我的密码: function countPalindromes(string, count) { if (string.length <= 1) { return count; } let [ firstLetter ] = string; let lastLet

我目前有一个计算给定字符串中回文数的代码,在我使用“appal”测试它之前,它运行良好。当函数返回2(appa和pp)时,它返回0。如果有人能够编辑我当前的代码,使其满足该要求,我将不胜感激,谢谢! 这是我的密码:

function countPalindromes(string, count) {
  if (string.length <= 1) {
    return count;
  }

  let [ firstLetter ] = string;
  let lastLetter = string[string.length - 1];

  if (firstLetter === lastLetter) {
    let stringWithoutFirstAndLastLetters = string.substring(1, string.length - 1);
    return countPalindromes(stringWithoutFirstAndLastLetters, count + 1);
  } else {
    return 0;
  }
}

console.log(countPalindromes("kayak", 0));
console.log(countPalindromes("aya", 0));
console.log(countPalindromes("appal", 0));
函数countPalindromes(字符串,计数){
如果(字符串长度
函数isAlindrome(str){
return str==str.split(“”).reverse().join(“”);
}
//仅迭代解
函数计数回文{
让计数=0;
for(设i=0;i
函数isAlindrome(str){
return str==str.split(“”).reverse().join(“”);
}
//仅迭代解
函数计数回文{
让计数=0;
for(设i=0;iconsole.log(countPalindromes(“appal”);
我认为这个函数就可以了。我很乐意重构它并在以后解释它。我宁愿编写一个新函数,因为我认为您的代码离执行任务不远了

函数返回numberofpalindromes(word){
函数isAlindrome(块){
返回[…块].reverse().join(“”)=chunk;
}
让tally=0;

对于(让index1=0;index1我认为这个函数就可以了。我很乐意重构并在以后解释它。我宁愿编写一个新函数,因为我认为您的代码离执行任务不远了

函数返回numberofpalindromes(word){
函数isAlindrome(块){
返回[…块].reverse().join(“”)=chunk;
}
让tally=0;
对于(设index1=0;index1
  • 因此,基本上,如果您在迭代循环中通过扫描字符串并将
    current
    current+1
    current+2
    进行比较,找到类似
    pp
    apa
    的回文,并将匹配项存储为具有开始-结束索引的对象

  • 您启动一个计数,该计数是数组的长度

  • 通过过滤元素来更新数组,如果较大的1是回文,则使用较少的元素更新对象,如果较大的1是回文,则使用较多的元素更新对象,并返回true或false,然后将其删除

  • 如果数组长度为零,则返回计数

  • 将数组长度添加到计数中,然后从3开始重复

  • 因此,基本上,如果您在迭代循环中通过扫描字符串并将
    current
    current+1
    current+2
    进行比较,找到类似
    pp
    apa
    的回文,并将匹配项存储为具有开始-结束索引的对象

  • 您启动一个计数,该计数是数组的长度

  • 通过过滤元素来更新数组,如果较大的1是回文,则使用较少的元素更新对象,如果较大的1是回文,则使用较多的元素更新对象,并返回true或false,然后将其删除

  • 如果数组长度为零,则返回计数

  • 将数组长度添加到计数中,然后从3开始重复



  • 我想你的问题是,你只会检查
    appal
    ppa
    是否是回文。你需要找到一些方法来检查字符串,不带第一个字母,也不带最后一个字母。@M-Chen-3你认为你能帮我吗?
    xyzappa
    是否也应该返回2,因为
    >appa
    pp
    是回文吗?这应该如何工作?是的,应该也返回2,我的作业要求我“给定一个字符串,计算该字符串中存在的回文数量(不包括单个字母),同时使用递归” @Sylwester@Sylwester我非常感谢你的帮助!!我想你的问题是你只会检查
    appal
    ppa
    是否是回文。你需要找到一些方法来检查不带第一个字母的字符串和不带最后一个字母的字符串。@M-Chen-3你能帮我检查t吗hat?应该
    xyzappa
    也返回2,因为
    appa
    pp
    都是回文?这应该如何工作?是的,也应该返回2,我的作业要求我“给定一个字符串,计算该字符串中存在的回文数量(不包括单个字母),同时使用递归” @Sylwester@Sylwester我非常感谢你的帮助!!你能帮我解决这个问题吗?@Candaceahrendsher是一个类似的问题:这个问题涉及到实现一个迭代函数,它有一个相同的问题,appal返回0而不是2@candaceahrendsmy assignments让我去做给定一个字符串,使用递归计算该字符串中存在的回文量(不包括单个字母)“@CanadaceAhrendsplease帮帮我,我真的很感激你能帮我解决这个问题吗?@Candaceahrendshelle是一个类似的问题:这个问题涉及到实现一个迭代函数,它有一个相同的问题,appal返回0而不是2@candaceahrendsmy任务要求我去做“给定一个字符串,计算该字符串中存在的回文数量(不包括单个字母),同时使用递归”@CanadaceAhrendsplease帮帮我,我会非常感激。你知道如何通过迭代方法编写相同的代码吗@tonitone120@2