Непонятнки с рекурсией + пару сопутствующих вопросов (плз хелп!)
Доброе времени суток)
Сам по себе новичок, поэтому жду критики). Собственно скрипт подбирает цифры в заданном диапазоне (без повторений). Дабы не повторялись цифры, решил использовать рекурскию, но тут посыпались проблемы. Надеюсь поможете разобраться с проблемой. Собственно вот вопросы: 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/ Спасибо за внимание! :) |
Генерация трёх чисел без повторов
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>
|
рони, Спасибо.
Подсказал варик получше) Хотя в Вашем случае все back, font , rot будут разные. Вариант типа rot = 1, back = 1 - исключен. PS Понял в чем траб был с моим кодом, надо было return для рекурсии сделать, просто код далее идёт после рекурсии. |
| Часовой пояс GMT +3, время: 15:15. |