首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >JS -在递归场景中追加到相同的字符串

问JS -在递归场景中追加到相同的字符串
EN

Stack Overflow用户
提问于 2013-11-15 18:54:06
回答 2查看 936关注 0票数 0

我在JS中读到字符串是不可变的,尽管JS的默认设置似乎是“通过引用传递”,但在递归层次结构中传递相同的字符串不会附加到相同的字符串,而是会创建副本。

我的场景需要创建一次单个字符串对象,并在递归和其他函数的非常深和很长的层次结构中传递,那么我如何实现这一点呢?我是一个喜欢C++的人,在C++中这很容易……只需通过引用传递,所有函数都在同一位字符串上工作。

EN

回答 2

Stack Overflow用户

发布于 2013-11-15 19:05:09

您可以使用包装器对象模拟原始值的按引用传递。这涉及到改变你的函数以意识到这一点:

代码语言:javascript
复制
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

当然,如果您愿意的话,包装器对象可以变成包装器类。

*JS仅为对象传递引用,而不为原始值传递

票数 0
EN

Stack Overflow用户

发布于 2020-09-19 00:18:15

您可以通过引用传递数组/字符串对象,类似于下面的代码来查找我传递的字符串数组(输出)的子序列,以存储在每次调用中传递的所有子序列。`

代码语言:javascript
复制
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)

    
}`
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/19999398

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档