Непонятнки с рекурсией + пару сопутствующих вопросов (плз хелп!)
Доброе времени суток)
Сам по себе новичок, поэтому жду критики). Собственно скрипт подбирает цифры в заданном диапазоне (без повторений). Дабы не повторялись цифры, решил использовать рекурскию, но тут посыпались проблемы. Надеюсь поможете разобраться с проблемой. Собственно вот вопросы: 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, время: 22:30. |