Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 07.04.2015, 20:29
Новичок на форуме
Отправить личное сообщение для by_dofamin Посмотреть профиль Найти все сообщения от by_dofamin
 
Регистрация: 07.04.2015
Сообщений: 2

Непонятнки с рекурсией + пару сопутствующих вопросов (плз хелп!)
Доброе времени суток)
Сам по себе новичок, поэтому жду критики).
Собственно скрипт подбирает цифры в заданном диапазоне (без повторений).
Дабы не повторялись цифры, решил использовать рекурскию, но тут посыпались проблемы. Надеюсь поможете разобраться с проблемой.

Собственно вот вопросы:
1 - Почему когда срабатывает рекурсия - переменная undefined;
2 - Как по мне это гамно код. Можно ли передать саму переменную в аргумент функции. Если точнее то я хочу передавать аргументом не значение переменной, а ссылку на переменную. Как то так) Ну по коду думаю поймёте.
if(q==1){
if((rot == cur)) random_numb(q, len, min)
else return cur;
};
if(q==2){

if(back == cur) random_numb(q, len, min)
else return cur;
};
if(q==3){
if(font == cur) random_numb(q, len, min)
else return cur;
};

А вот ссылка на пример кода
https://jsfiddle.net/72p4yokb/
Спасибо за внимание!
Ответить с цитированием
  #2 (permalink)  
Старый 07.04.2015, 20:50
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,109

Генерация трёх чисел без повторов
by_dofamin,
вариант
<!DOCTYPE html>
<html>
<head>
  <meta http-equiv="content-type" content="text/html; charset=UTF-8">
  <title> - jsFiddle demo</title>
  <style type='text/css'>
    #id{
    font-size:20px;
    color:#000;
}
  </style>
<script>
window.onload=function(){
var rot = back = font = 0;
var t, arr;
var text = document.getElementById("id");
function random_all(){
            arr = [];
            back = random_numb(5, 0);
            font = random_numb(5, 0);
			rot = random_numb(10, 0);



      t = "rot: "+rot+",<br> back: "+back+"<br> font: "+font;
      text.innerHTML= t;
		};

		function random_numb(len, min){
			var cur = Math.floor(Math.random() * ((len-1) - min + min)) + min;
            if (arr.indexOf(cur) != -1) return random_numb(len, min)
            arr.push(cur)
            return cur
		};
		setInterval(function(){
			random_all();
		},1000);
}
</script>
</head>
<body>
  <div id="id">Test</div>
</body>
</html>
Ответить с цитированием
  #3 (permalink)  
Старый 08.04.2015, 15:00
Новичок на форуме
Отправить личное сообщение для by_dofamin Посмотреть профиль Найти все сообщения от by_dofamin
 
Регистрация: 07.04.2015
Сообщений: 2

рони, Спасибо.
Подсказал варик получше) Хотя в Вашем случае все back, font , rot будут разные. Вариант типа rot = 1, back = 1 - исключен.

PS Понял в чем траб был с моим кодом, надо было return для рекурсии сделать, просто код далее идёт после рекурсии.

Последний раз редактировалось by_dofamin, 08.04.2015 в 15:11.
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Пару вопросов kotkew Общие вопросы Javascript 1 15.02.2014 08:27
Пару вопросов по мадальному окну. lamer Общие вопросы Javascript 8 23.11.2013 17:55