Рекурсивный метод
Стараюсь разобраться с алгоритмами более подробно.. Вот решил сделать такую задачку: создание массива с использованием "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, время: 13:40. |