簡體   English   中英

為什么 combinationSum function 返回的數組為空(Javascript)?

[英]Why the array returned by the combinationSum function is empty (Javascript)?

combinationSum function 返回的resultArr為空。 當我控制台記錄 ds 數組時,它打印出正確的答案,但最終的 output 數組是 [[],[]]

 var combinationSum = function(candidates, target) { const resultArr = [] function combinationSumHelper(idx, candidates, ds, target){ if(idx === candidates.length){ // base case if(target === 0){ console.log(ds) *// This line outputs right ans but resultArr returned by combinationSum function is empty* resultArr.push(ds) } return } if(candidates[idx] <= target){ ds.push(candidates[idx]) combinationSumHelper(idx, candidates, ds, target - candidates[idx]) ds.pop() } combinationSumHelper(idx+1, candidates, ds, target) } combinationSumHelper(0, candidates, [], target) return resultArr }; console.log(combinationSum([2,3,6,7], 7))

OUTPUT: [ [], [] ]

預計 OUTPUT: [[2,2,3],[7]]

標准輸出: [ 2, 2, 3 ] [ 7 ]

這將為您提供您正在尋找的 output:

var combinationSum = function(candidates, target) {
    const resultArr = []
    function combinationSumHelper(idx, candidates, ds, target){
        if(idx === candidates.length){ // base case
            if(target === 0){
                console.log(ds) *// This line outputs right ans but resultArr returned by combinationSum function is empty*
                resultArr.push([...ds])
            }
            return
        }
        if(candidates[idx] <= target){
            ds.push(candidates[idx])
            combinationSumHelper(idx, candidates, ds, target - candidates[idx])
            ds.pop()
        }
        combinationSumHelper(idx+1, candidates, ds, target)
    }
    combinationSumHelper(0, candidates, [], target)
    return resultArr
};

console.log(combinationSum([2,3,6,7], 7))

您面臨的問題是以下帶有ds.pushds.popif子句正在改變您的數組和最終的 output。

通過將代碼更改為resultArr.push([...ds]) ,您可以復制數組。 這將確保它不會進一步發生變異。

當我運行此代碼時,我得到的 output 是:[[2, 2, 3], [7]]

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM