【发布时间】:2020-04-12 21:41:56
【问题描述】:
您好,我对 javascript 编程非常陌生。我正在学习 FCC 和 Grasshopper。在 Grasshopper 上,我被困在关于递归替换功能的课程上。我不明白。如果有人解释,这将是一个很大的帮助。 所以根据教训,它是这样的:
var wrongDocument = "This document ahs a typo in it. The other one ahs typo too.";
function changeSpelling(string, oldPart, newPart) {
if (string.includes(oldPart) === false) {
return string;
}
string = string.replace(oldPart, newPart);
return changeSpelling(string, oldPart, newPart);
};
console.log(wrongDocument);
console.log(changeSpelling(wrongDocument, 'ahs', 'has'));
我面临的问题是我不明白 return 语句为什么以及如何调用它所在的函数?
第二个为什么不能用 if...else 语句来解释? 第三,我在理解参数和参数时遇到问题。 所以我写了以下代码。这绝对不是替换所有拼写,但我无法进一步理解。
var chat = "This document ahs a typo in it. The other one ahs too.";
var fix = (a, b) => {
if (chat.includes(a) === false) {
return chat;
}
else {
return chat.replace(a, b)
}
}
console.log(chat);
console.log(fix('ahs', 'has'));
请解释递归函数的工作原理以及我的代码有什么问题。
【问题讨论】:
-
不确定这是解释递归的地方。此外,您还有几个问题很难用 stackoverflow 的格式来解释
-
只是一些让您入门的东西:递归类似于编写
while循环,而不是if/else。while (string.includes(oldPart)) { string = string.replace(oldPart, newPart); } return string;相当于递归实现。 -
@Mulli 知道。但我不能问别的地方。我在各自的论坛上问过,但要等一周才会有人回复。在那之前我不能拖延我的进步。如果可以在 cmets 中解释,那也很好。
-
@PatrickRoberts 谢谢。让我检查一下。还没遇到过。
-
@ScottSauyet 我知道,但我认为一个好的教程也会提到还有其他(更好的)方法可以做同样的事情......我想它没有,这就是我这样做的原因那...
标签: javascript function recursion