私がしようとしているのは、配列とテスト関数を受け取り、テストに合格する配列の最初の要素を返すfindの再帰バージョンを作ることです。例を見てみましょう:find()の再帰バージョン
function isEven(num) { return(num%2 == 0); }
var arr = [1, 3, 5, 4, 2];
function findRecursive(arr, func) {
var p = arr.shift();
if (func(p) == true)
return p;
else
findRecursive(arr, func);
}
findRecursive(arr, isEven);
何らかの理由で私は未定義になっています。しかし、もし私が5行目のポップにシフトすると、正しく2が返ってきます。何が問題なのですか?
。あなたの 'else'節で' findRecursive(arr、func);を返すべきです。 – Prasanna