2017-09-17 1 views
-1

저는 재귀 함수가 있으며 완료되면 최신의 결과를 반환 할 수 있어야합니다.resursive 함수의 결과를 반환하십시오.

let called 결과가 커집니다.

성장이 끝나면 반환해야합니다.

+0

후 최종 결과가 될 것입니다. – AngularM

+0

나는 그것을 얻을 수 있을지 잘 모르겠다. 완료되면 이미 돌아 오지 않습니까? 실제로 반환 된 값을 로깅하는 대신 console.log가 함수 내에 있습니다 -> https://jsfiddle.net/adeneo/179ksdLa/1/ – adeneo

답변

1
const target= 10; 
const list= [2, 5]; 
const zero = 0; 
let results = []; 

function test(amount, list, start, list) { 
    let next_results = []; 
    for (let i = start; i < collection.length; i++) { 
     let left = amount - collection[i]; 
     let currentList = list.slice(zero); 
     currentList.push(collection[i]); 

     if (left < zero) return []; 

     if (left === zero) { 
      next_results.push(list2); 
      results = results.concat(next_results); 
      return results; 
     } else { 
      let newr = test(left, list2, i, collection); 
      if (newr.length) { 
       next_results = next_results.concat(newr); 
      } 
     } 
    } 
    return results; 
} 

//Start point 
test(target, [], zero, list); 

결과 :

[ { Combinations: [ 2, 2, 2, 2, 2 ] }, { Combinations: [ 5, 5 ] } ] 
+0

감사합니다. 코드가 올바르게 작동합니다. 유일한 문제는 함수가 응답을 반환하지 않는다는 것입니다. 완성 된 결과를 반환하려면 위의 함수가 필요합니다. 그래서 함수에 대한 단위 테스트를 할 수 있고 예를 들어 올바른 결과를 돌려줍니다. – AngularM

+0

'results'는 그 함수 밖에서 정의되고 그 값은 유지되기 때문에 그렇게 할 필요는 없습니다. 그러나 당신이 주장한다면, 코드를 수정하여 리턴 할 수 있습니다. –

+0

네, 수정 해주십시오. CS에 감사드립니다. – AngularM

0

이것은 일반적인 생각이다. 재귀 함수는 값을 반환해야하거나 값을 전달 특정 조건 호출 자체에서 ... 최종 제품은 모든 재귀 반복 그래도 난 결과를 초래하는 기능을 필요

function recursive(v){ 
    if(condition) return recursive(v++); 
    else return v; 
} 

var n = recursive(1); 
관련 문제