【发布时间】:2020-11-10 02:24:27
【问题描述】:
如何使用递归函数找到任何给定字符串中的所有子字符串?我知道如何使用 2 个 for 循环来做到这一点,但我不知道如何使用递归来做到这一点。需要检查每个子字符串是否为回文。这是我的非迭代解决方案。
console.log(palindromeIterative("madam"));
function palindromeIterative(word) {
let noOfP = 0;
for (let i = 0; i < word.length; i++) {
for (let j = i + 1; j <= word.length; j++) {
noOfP = palindromeIterativeHelper(word.substring(i, j), noOfP);
}
}
return noOfP;
}
function palindromeIterativeHelper(word, noOfP) {
if (word === word.split("").reverse().join("") && word.length > 1) {
console.log(word);
noOfP++;
}
return noOfP;
}
【问题讨论】:
-
您的递归函数应该检查给定的字符串以查看它是否是回文,然后遍历每个短一个字符的子字符串并在该子字符串上调用自身。例如,如果您的字符串是“ABC”(3 个字符长),该函数将检查“ABC”的回文性,然后调用自身两次:首先传递“AB”,然后传递“BC”(即所有2 个字符长的子字符串)。当要检查的字符串只有一个字符时,函数不再递归。
-
我昨天回答了一个类似的问题。也许它有帮助? stackoverflow.com/a/64760183/1244884
-
这是我的确切任务,哈哈
标签: javascript recursion palindrome