为了账号安全,请及时绑定邮箱和手机立即绑定

Q:javascript 递归如何实时返回当时的值,目前返回值为递归完成后变量的值,创建闭包好像也没能达预期?

Q:javascript 递归如何实时返回当时的值,目前返回值为递归完成后变量的值,创建闭包好像也没能达预期?

至尊宝的传说 2019-04-13 08:37:00
varcombine=function(n,k){functionbacktracking(n,k){if(k){//min(k)=1,whenk=0breakfor(vari=1;in){return[];}else{backtracking(n,k);}returnresult;};combine(4,2);solutionoutput:[2,1][3,1][4,1][1,2][3,2][4,2][1,3][2,3][4,3][1,4][2,4][3,4]resultoutput:[[3,4],[3,4],[3,4],[3,4],[3,4],[3,4],[3,4],[3,4],[3,4],[3,4],[3,4],[3,4]]resultexpect:[[2,1],[3,1],[4,1],[1,2],[3,2],[4,2],[1,3],[2,3],[4,3],[1,4],[2,4],[3,4]]
查看完整描述

2 回答

?
米琪卡哇伊

TA贡献1998条经验 获得超6个赞

returnresult.push(solution);
改为如下即可:
returnresult.push(solution.slice(0));
                            
查看完整回答
反对 回复 2019-04-13
?
长风秋雁

TA贡献1757条经验 获得超7个赞

引用类型每次修改都是同一个。你需要创建一个副本,随便调用数组的一个能返回浅拷贝的方法就行了。比如楼上的slice()或者cancat等等
                            
查看完整回答
反对 回复 2019-04-13
  • 2 回答
  • 0 关注
  • 282 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号