Рекурсивный метод
Стараюсь разобраться с алгоритмами более подробно.. Вот решил сделать такую задачку: создание массива с использованием "for/while/do..while".. Проблем не возникло, пока не добрался до рекурсии..
Как можно преобразовать данный пример, используя рекурсию? :write:
function sortedArray(){
sAr = new Array();
for (var i=0, l = arrayLength; i<l; i++){
var maxV = (arrayMax + 1) - arrayMin;
var minV = arrayMin;
sAr.push(Math.floor((Math.random() * maxV) + minV ));
};
|
Примерно, так, наверное:
function createArray(index, array){
if(!array) array = [];
array[ --index ] = index;// здесь подставляй что хочешь
if( index === 0 ) return array;
return createArray(index, array);
};
alert( createArray(3) );
|
санкЮ))
Получилось следующее:
function sortedArray(){
function createArray(index, array){
var maxV = (arrayMax + 1) - arrayMin;
var minV = arrayMin;
if(!array) array = [];
array[ --index ] = Math.floor((Math.random() * maxV) + minV );
if( index === 0 ) return array;
return createArray(index, array);
};
alert("Array: \n" + createArray(arrayLength));
};
Но тут теперь появилась трудность с сортировкой такого массива.. Написал такое:
Array.prototype.sort = function()
{
for(i=0;i<this .length;i++)
{
for(j=i+1;j<this.length;j++)
{
if(Number(this[i]) >Number(this[j]))
{
temp = this[j];
this[j] = this[i];
this[i] = temp;
}
}
}
};
к чему его привязать можно? в предидущих функциях делал так: myArray.sort(arraySort()); |
alert("Array: \n" + createArray(arrayLength).sort());
|
Цитата:
алерт: "Array: undefined" :-? |
розобралься:
function sortedArray(){ function createArray(index, array){ var maxV = (arrayMax + 1) - arrayMin; var minV = arrayMin; if(!array) array = []; array[ --index ] = Math.floor((Math.random() * maxV) + minV ); array.sort(arraySort()); if( index === 0 ) return array; return createArray(index, array); }; alert("Array: \n" + createArray(arrayLength)); }; |
| Часовой пояс GMT +3, время: 00:33. |