Javascript JS-在递归场景中附加到同一字符串
我了解到,在JS中,Sting是不可变的,即使JS的默认设置是“按引用传递”,在递归层次结构中传递相同的字符串不会附加到相同的字符串,而是创建副本Javascript JS-在递归场景中附加到同一字符串,javascript,string,recursion,reference,immutability,Javascript,String,Recursion,Reference,Immutability,我了解到,在JS中,Sting是不可变的,即使JS的默认设置是“按引用传递”,在递归层次结构中传递相同的字符串不会附加到相同的字符串,而是创建副本 我的场景需要一次创建一个字符串对象,并在递归函数和其他函数的很深很长的层次结构中传递,那么我如何实现这一点呢?我是一个C++的家伙,在C++中很容易…只需按引用传递,所有函数都在相同的字符串位上工作。您可以使用包装器对象模拟原语值的按引用传递。这涉及到改变您的功能以了解: function append(strWrapper,n) { if (n
我的场景需要一次创建一个字符串对象,并在递归函数和其他函数的很深很长的层次结构中传递,那么我如何实现这一点呢?我是一个C++的家伙,在C++中很容易…只需按引用传递,所有函数都在相同的字符串位上工作。您可以使用包装器对象模拟原语值的按引用传递。这涉及到改变您的功能以了解:
function append(strWrapper,n) {
if (n <= 0) {
return strWrapper;
} else {
strWrapper.val += n;
return append(strWrapper, n-1);
}
}
console.log(append({ val : '' }, 9).val); // 987654321
函数附加(strWrapper,n){
如果(n您可以传递数组/字符串对象,就像它们通过引用传递一样,类似下面的代码来查找子序列,我已经传递了字符串数组(输出),以存储在每次调用中传递的所有子序列
`
函数子序列(输入、输出){
if(input.length==0)
{
输出[0]=“”;
返回1;
}
设smallStr=input.substr(1);
设smallerSeqSize=子序列(smallStr,输出);
对于(让i=0;我可以尝试用自己的堆栈折叠递归(希望不会溢出;)@amdixon-这不是一个选项,除了递归之外,我还有必须附加到同一字符串的对象层次结构。也许回答您最初的问题会更容易。为什么不粘贴递归调用,然后尝试说服所有人JS中没有办法使其工作?然后有人会很高兴地指出JS的方法。哟您可以使用数组存储字符串部分,然后在递归完成后将结果“连接”到一个数组中。@amdixon-这不是HTML,而是QML,我不知道jquery对具有完全不同DOM的QML有多适用等等。
function subsequence( input, output){
if(input.length==0)
{
output[0]="";
return 1;
}
let smallStr = input.substr(1);
let smallerSeqSize = subsequence(smallStr,output);
for(let i=0;i<smallerSeqSize;i++){
output[smallerSeqSize+i] = input[0]+output[i];
}
return 2*smallerSeqSize;
}
function main(){
let input = "abc";
let output = new Array("")
let sizeOutput = subsequence(input,output);
console.log(output)
}`