JavaScriptで再帰的に記述しようとしています。私は前と同じ配列を取得しています(つまり、何も変わりません)。私の安定したパーティションアルゴリズムの欠陥はどこですか?
どこに欠陥がありますか?
function unstable_partition (arr, f)
{
if(arr.length <= 1)
return arr;
var n = arr.length - 1;
if(f(arr[0]))
return unstable_partition(arr.slice(0,n),f).concat([arr[0]]);
else if(!f(arr[n]))
return [arr[n]].concat(unstable_partition(arr.slice(0,n - 1),f));
else
return [arr[0]].concat(unstable_partition(arr.slice(1,n - 1)),f).concat([arr[n]]);
}
var isEven = function(x) { return x % 2 == 0; }
var myArray = [1,2,3,3,4,5];
alert(unstable_partition(myArray,isEven).join(","));
それがために同じ配列を返しません。私。最後のリターンを間違ったものにしてしまいました。それは 'return [arr [0] 'ではありません。 ); '? – choz