Yury が述べたように、再帰は必要ありません (実際、問題の再帰的な解決策がある場合は、非再帰的な解決策も存在します!)。しかし、あなたが本当にそれを望むなら、ここにあります:
// length is the length of the expected strings
// partial is a partial solution (a string with at most length characters)
// partial is not a required parameter!
function recursivePrint(length, partial) {
partial = partial || ''; // initialize partial to the empty string if it is not provided
if (partial.length === length) { // exit condition
console.log(partial); // a solution should be printed
} else { // recursion incoming
// the next step from a partial solution is to build 2 more (partial) solutions by appending 0/1 before this one
recursivePrint(length, '0' + partial);
recursivePrint(length, '1' + partial);
}
}
recursivePrint(3); // start recursion
手順は次のとおりです。
''
'0'
'00'
'000' -> print
'100' -> print
'10'
'010' -> print
'110' -> print
'1'
'01'
'001' -> print
'101' -> print
'11'
'011' -> print
'111' -> print
合計: 2^3 ソリューション
デモ: http://jsbin.com/oBiMiHe/1/edit
わずかに改善されたrecursivePrint
関数は、ソリューションごとに呼び出されるコールバックを取得するようになりました。デモは、ログに記録される値で配列を作成します。