Javascript 我的函数没有';我什么也不退
我在Heap函数中插入了一个字符串数组。尽管Javascript 我的函数没有';我什么也不退,javascript,arrays,algorithm,heap,Javascript,Arrays,Algorithm,Heap,我在Heap函数中插入了一个字符串数组。尽管函数generate()正确打印输出console.log(permut),它不返回任何数据 带有返回arr的版本1 var arrStr = ['a', 'a', 'b']; var generated = generate(arrStr, arrStr.length); console.log(g2); function generate(arr, n) { if (n === 1) { console.lo
函数generate()
正确打印输出console.log(permut)代码>,它不返回任何数据
带有返回arr的版本1
var arrStr = ['a', 'a', 'b'];
var generated = generate(arrStr, arrStr.length);
console.log(g2);
function generate(arr, n) {
if (n === 1) {
console.log(arr);
return arr;
} else {
for (var i = 0; i < n; i++) {
generate(arr, n - 1);
if (n % 2 === 0) {
swap(i, n-1, arr);
} else {
swap(0, n-1, arr);
}
}
}
}
function swap(a, b, ar) {
var temp = ar[b];
ar[b] = ar[a];
ar[a] = temp;
}
版本1返回未定义的变量生成的,版本2返回空数组
我试图返回一个测试字符串'asd',但仍然没有得到任何结果。JavaScript函数中声明的变量成为函数的局部变量。查看Javascript作用域。换句话说,对函数内部的函数参数所做的更改不会影响函数外部的参数变量
只需在算法结束时返回生成的对象
例如:
var n = 1;
incrementByOne(n);
console.log(n) //still 1
function incrementByOne(number) {
number++;
}
解决方案是返回结果并使用变量获取:
var n = 1;
n = incrementByOne(n);
console.log(n) //now it's 2
function incrementByOne(number) {
return number++;
}
递归调用函数,但如何处理递归调用的结果?在else
路径中,您实际返回了什么?该函数工作正常。在else
路径中,n
被减少,直到执行问题返回的n==1
。在显示的代码中,如果n!==1
(即在其他部分
中)您没有返回
语句。也就是说,函数不返回任何内容。如果要返回值,实际上必须使用return
语句<代码>如果。。。else
是二进制的,因为它要么执行某些操作(如果条件为true),要么执行其他操作。在函数中,somethinelse部分由第一个初始调用执行,它不返回任何内容。我建议您在调试器中逐步完成代码。谢谢,我刚刚开始使用Mozilla的调试器。我想这就是我在var generated=generate(arrStr,arrStr.length)中所做的代码>你想用这个算法做什么?
var n = 1;
n = incrementByOne(n);
console.log(n) //now it's 2
function incrementByOne(number) {
return number++;
}