我现在已经绕着递归一周了。我想说我很清楚如何运作。我挣扎的细节是归还的。在第8行return str;
中,函数是否将str作为数组吐出?对于每次迭代,如果是这样,为什么我不能将其推送到newArr
?现在我的输出是[undefined]
,我想知道为什么会这样。
function permAlone(str, n, output = []) {
var n = n || str.length
if (n == 1) {
// console.log(str)
return str
} else {
for (var i = 1; i <= n; i++) {
permAlone(str, n - 1)
if (n % 2) {
var j = 1
} else {
j = i
}
swap(str, j - 1, n - 1)
}
}
}
function swap(a, i, j) {
var temp = a[i]
a[i] = a[j]
a[j] = temp
}
var newArr = [];
newArr.push(permAlone('abc'.split('')));
console.log(newArr);
&#13;
答案 0 :(得分:1)
在大多数编程语言中,return语句是“return”或“return value”,其中value是从子例程返回的变量或其他信息。所以return语句返回你想要的预期结果。尝试以下示例返回并且不返回。 1)返回。
function sum(){
var test = 5 + 6;
return test;
}
console.log(sum());
2)没有回报。
function sum(){
var test = 5 + 6;;
}
console.log(sum());