cuốn sách gpt4 ai đã làm

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

In lại Tác giả: Walker 123 更新时间:2023-11-28 19:55:41 25 4
mua khóa gpt4 Nike

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

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

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

function isPalindrome(str) {
if (str.length <= 1) {
trả về sự thật;
}
if (str.charAt(0) !== str.charAt(str.length -1)) {
trả về sai;
}
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('');
}

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

câu trả lời hay nhất

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

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

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
Đề xuất bài viết: Python 正则表达式字边界未按预期工作
Đề xuất bài viết: Python PEP8 约定
Đề xuất bài viết: python - 空行上的语法无效
Đề xuất bài viết: javascript - 返回多维数组
Walker 123
Hồ sơ

Tôi là một lập trình viên xuất sắc, rất giỏi!

Nhận phiếu giảm giá taxi Didi miễn phí
Phiếu giảm giá taxi Didi
Chứng chỉ ICP Bắc Kinh số 000000
Hợp tác quảng cáo: 1813099741@qq.com 6ren.com
Xem sitemap của VNExpress