gpt4 book ai didi

javascript - 区分递归函数的初始调用和连续调用

转载 作者:行者123 更新时间:2023-11-28 19:55:41 25 4
gpt4 key购买 nike

我的广泛问题是区分 JavaScript 中递归函数的初始调用和连续调用的最简单方法是什么。

让我举个例子......

假设如果在初始调用中传递给函数的字符串为空,我希望以下函数返回 false。有没有办法在不向函数添加另一个参数的情况下执行此操作?

function isPalindrome(str) {
if (str.length <= 1) {
return true;
}
if (str.charAt(0) !== str.charAt(str.length -1)) {
return false;
}
return isPalindrome(str.substr(1, str.length - 2));
}

isPalindrome('') // returns true, but I want this to return false

顺便说一句,我知道上面的函数可以写得更简单:

function isPalindrome(str) {
return str == str.split('').reverse().join('');
}

但我将其重新定义为递归函数,以解决更广泛的问题......

最佳答案

不要试图区分不同的调用 - 函数的结果不应该依赖于副作用,并且绝对不依赖于调用堆栈。

相反,使用第二个函数来做一些不同的事情:

function isPalindrome(str) {
return str.length <= 1 ||
str.charAt(0) == str.charAt(str.length-1) && isPalindrome(str.slice(1, -1));
}
function isNonEmptyPalindrome(str) {
return str.length > 0 && isPalindrome(str);
}

关于javascript - 区分递归函数的初始调用和连续调用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22622787/

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