gpt4 book ai didi

使用递归的 JavaScript 排列

转载 作者:行者123 更新时间:2023-12-03 00:06:14 26 4
gpt4 key购买 nike

我知道互联网上有很多针对我的具体问题的解决方案,但我一直在尝试以特定的方式解决它,但它不起作用,我真的无法理解出了什么问题。就我而言,我只想打印排列。这是我的代码:

a = "abc";


function f7(a, b) {



//document.write("str: "+a+" b:"+b+"<br>");
if (b.length == 2) {
perm = b + a;
return perm;
}

var c = [];
var str = [];

for (i = 0; i < a.length; i++) {

c[i] = b + a.charAt(i);
str[i] = a.substring(0, i) + a.substring(i + 1);

document.write("i: " + i + " c[i]: " + c[i] + " str[i]: " + str[i] + "<br>");

return f7(str[i], c[i]);


}


//return {str,c}

}


document.write(f7(a, ""));

//g=f7(a,"");
//document.write(g.str+"<br>");
//document.write(g.c+"<br>");

上面的代码没有超出第一个排列,我不明白为什么。预先感谢您的任何建议

最佳答案

循环中的返回值会导致退出循环。您正在返回 for 语句中的值,该语句在循环完成之前立即停止。

可以使用临时变量在for循环中保存值,然后返回它。

a = "abc";


function f7(a, b) {
//document.write("str: "+a+" b:"+b+"<br>");
if (b.length == 2) {
perm = b + a;
return perm;
}

var c = [];
var str = [];
var temp = '';

for (i = 0; i < a.length; i++) {
c[i] = b + a.charAt(i);
str[i] = a.substring(0, i) + a.substring(i + 1);

document.write("i: " + i + " c[i]: " + c[i] + " str[i]: " + str[i] + "<br>");

temp += f7(str[i], c[i]);
}

return temp
}


document.write(f7(a, ""));

//g=f7(a,"");
//document.write(g.str+"<br>");
//document.write(g.c+"<br>");

关于使用递归的 JavaScript 排列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54955796/

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