私は再帰関数を持っています。終了時を知る必要があるので、最新の結果を返すことができます。再帰関数の結果を返します
let called resultsが大きくなります。
成長が終了した後にのみ返す必要があります。
私は再帰関数を持っています。終了時を知る必要があるので、最新の結果を返すことができます。再帰関数の結果を返します
let called resultsが大きくなります。
成長が終了した後にのみ返す必要があります。
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 ] } ]
これが一般的な考え方です。再帰関数は、私も結果をもたらすために機能を必要とする
function recursive(v){
if(condition) return recursive(v++);
else return v;
}
var n = recursive(1);
すべての再帰の反復後の最終製品は、最終的な結果になります...値を渡して自分自身を呼び出して値を返すか、一定の条件の下でなければなりません。 – AngularM
私はそれを本当に確信していませんか?それはすでに完了したときに戻っていないのですか?実際の戻り値を記録するのではなく、関数内にconsole.logがあります - > https://jsfiddle.net/adeneo/179ksdLa/1/ – adeneo