函数调用
2025/12/17 15:49:45
//js实现在1到N的数列中找出和等于sum的组合数
functionfindCombinations(n,sum){letresult=[];// 回溯函数:start起始位置,path当前组合,currentSum当前和functionbacktrack(start,path,currentSum){if(currentSum===sum){result.push([...path]);return;}for(leti=start;i<=n;i++){if(currentSum+i>sum){break;}// 选择当前数ipath.push(i);console.log('选择:',path,'当前和:',currentSum+i);// 递归:下一个数从i+1开始(不可重复选当前数)backtrack(i+1,path,currentSum+i);// 回溯:撤销选择,尝试不选当前数letpopv=path.pop();}}backtrack(1,[],0);returnresult;}console.log(findCombinations(5,5));// [[5], [1,4], [2,3]]console.log(findCombinations(10,10));// [[10], [1,9], [2,8], [3,7], [4,6], [1,2,7], [1,3,6], [1,4,5], [2,3,5], [1,2,3,4]]