Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   Рекурсивный метод (https://javascript.ru/forum/misc/18043-rekursivnyjj-metod.html)

cinedd 14.06.2011 19:49

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

Sweet 14.06.2011 20:21

Примерно, так, наверное:
function createArray(index, array){
  if(!array) array = [];
  array[ --index ] = index;// здесь подставляй что хочешь
  if( index === 0 ) return array;
  return createArray(index, array);
};

alert( createArray(3) );

cinedd 14.06.2011 21:18

санкЮ))

Получилось следующее:


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());

Sweet 14.06.2011 22:02

alert("Array: \n" + createArray(arrayLength).sort());

cinedd 14.06.2011 22:05

Цитата:

Сообщение от Sweet (Сообщение 108724)
alert("Array: \n" + createArray(arrayLength).sort());

так делал, без успеха:

алерт: "Array: undefined" :-?

cinedd 14.06.2011 22:17

розобралься:
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.