Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 10.12.2014, 17:00
Аспирант
Отправить личное сообщение для kaflan Посмотреть профиль Найти все сообщения от kaflan
 
Регистрация: 11.11.2014
Сообщений: 48

Штудирую книгу ильи) усложнил себе задание
вот тут решил хитрую штуку замутить, и сделать через while рекурсию парсить) и не выходит.
var num = prompt("число",2);
var exp = prompt("степень", 10);
var result = 1;
var cnt = 1;
function pow(num, exp){
    
while(cnt<=exp){
    result*=num;
    cnt++;    
   }
     return alert(result);}

мб помогут разобраться где я делю ошибку, через цикл фор все должно прекрасно работать а с вайлом беда) давайте раберемся ребята)
Ответить с цитированием
  #2 (permalink)  
Старый 10.12.2014, 23:55
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,109

kaflan,
function pow(){
var num = prompt("число",2);
var exp = prompt("степень", 10);
var result = 1;
var cnt = 1;
while(cnt<=exp){
    result*=num;
    cnt++;
   }
     return result}
alert(pow());
Ответить с цитированием
  #3 (permalink)  
Старый 11.12.2014, 01:14
Профессор
Посмотреть профиль Найти все сообщения от krutoy
 
Регистрация: 09.11.2014
Сообщений: 610

А в чем проблема? Твой код работает
var num = prompt("число",2);
var exp = prompt("степень", 10);
var result = 1;
var cnt = 1;
function pow(num, exp){
     
while(cnt<=exp){
    result*=num;
    cnt++;   
   }
     return alert(result);}

pow(num, exp)

Проблема в том, что ты ее не вызвал?
Или "рекурсию парсить" не получается? Попробуй через моноид, в категории эндофункторов.
Ответить с цитированием
  #4 (permalink)  
Старый 11.12.2014, 11:55
Аспирант
Отправить личное сообщение для kaflan Посмотреть профиль Найти все сообщения от kaflan
 
Регистрация: 11.11.2014
Сообщений: 48

Сообщение от krutoy
А в чем проблема? Твой код работает
ракую, просто не знал как рекурсивно ее вызвать спс. это мне очень поможет
Ответить с цитированием
  #5 (permalink)  
Старый 11.12.2014, 11:56
Аспирант
Отправить личное сообщение для kaflan Посмотреть профиль Найти все сообщения от kaflan
 
Регистрация: 11.11.2014
Сообщений: 48

Сообщение от krutoy
Проблема в том, что ты ее не вызвал?
Или "рекурсию парсить" не получается? Попробуй через моноид, в категории эндофункторов.
кикието магические слова, для меня ещенемного и ктулху призовешь)
Ответить с цитированием
  #6 (permalink)  
Старый 11.12.2014, 16:33
Профессор
Посмотреть профиль Найти все сообщения от krutoy
 
Регистрация: 09.11.2014
Сообщений: 610

Сообщение от kaflan
как рекурсивно ее вызвать
Ты там рекурсивно ничего не вызываешь. Это обычный вызов. Рекурсивно -- это когда изнутри ф-ции вызывается та же ф-ция, либо, вызывается ф-ция, которая вызывает ту же ф-цию -- взаимная рекурсия. Классический пример -- рекурсивный факториал. Насчет моноидов я пошутил, если че.

По поводу парсинга -- тоже не в кассу. Парсинг -- это обработка текста, грубо говоря. Не употребляй слова, значения которх не знаешь.
Ответить с цитированием
  #7 (permalink)  
Старый 12.12.2014, 01:03
Аспирант
Отправить личное сообщение для kaflan Посмотреть профиль Найти все сообщения от kaflan
 
Регистрация: 11.11.2014
Сообщений: 48

Сообщение от krutoy
Парсинг -- это обработка текста, грубо говоря.
ну да
Ответить с цитированием
  #8 (permalink)  
Старый 12.12.2014, 01:04
Аспирант
Отправить личное сообщение для kaflan Посмотреть профиль Найти все сообщения от kaflan
 
Регистрация: 11.11.2014
Сообщений: 48

Сообщение от kaflan
Классический пример -- рекурсивный факториал.
дай сцыль. или код... рекурсия в рекурсии это сдорово
Ответить с цитированием
  #9 (permalink)  
Старый 12.12.2014, 01:22
Профессор
Посмотреть профиль Найти все сообщения от krutoy
 
Регистрация: 09.11.2014
Сообщений: 610

Сообщение от kaflan
дай сцыль. или код... рекурсия в рекурсии это сдорово
fact=function(n){if(n<2) return n; return n*fact(n-1)}
alert(fact(5))
// 120

И нет тут никакой рекурсии в рекурси, это просто рекурсия. И это не здорово, просто иногда бывает удобней написать рекурсивно, например, при обходе дерева, но в общем случае, такого кода надо избегать, так как это дерьмо отжирает много памяти. Любой рекурсивный код можно переписать в виде цикла.
Ответить с цитированием
  #10 (permalink)  
Старый 12.12.2014, 11:31
Аспирант
Отправить личное сообщение для kaflan Посмотреть профиль Найти все сообщения от kaflan
 
Регистрация: 11.11.2014
Сообщений: 48

Сообщение от krutoy
так как это дерьмо отжирает много памяти
да это единственный минус) пожалуй
Ответить с цитированием
Ответ



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

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