21

Re: Лічильник через рекурсію.

mike написав:
ping написав:

не знаю js, просто цікавлюся.
підкажіть, а чому var num оголошена поза функцією ?
хіба не краще замість res=res+1 писати res += 1
або res = ++res
?

Тут справа в області видимості. Ця num  буде доступною в середині ф-ї, а вот ці змінні, які в середині функції вже є недоступними поза нею

так, але вона буде доступною і з інших функцій, хіба такий варіант не є потенційно загрозливим?
от у Вашому варіанті - startValue буде доступною тільки цій функції на всю глибину рекурсії
це ж краще.

22

Re: Лічильник через рекурсію.

ping написав:

або res = ++res

Де треба так писати? Тільки зайвий раз заплутуєте, як мені здається

Подякували: ping, mike, 221VOLT3

23

Re: Лічильник через рекурсію.

quez написав:
ping написав:

або res = ++res

Де треба так писати? Тільки зайвий раз заплутуєте, як мені здається

так писати не треба ! :)
мав на увазі викристовувати  ++res або res++  замість конструкцій типу  res = res + 1

24

Re: Лічильник через рекурсію.

ping написав:
mike написав:
ping написав:

не знаю js, просто цікавлюся.
підкажіть, а чому var num оголошена поза функцією ?
хіба не краще замість res=res+1 писати res += 1
або res = ++res
?

Тут справа в області видимості. Ця num  буде доступною в середині ф-ї, а вот ці змінні, які в середині функції вже є недоступними поза нею

так, але вона буде доступною і з інших функцій, хіба такий варіант не є потенційно загрозливим?
от у Вашому варіанті - startValue буде доступною тільки цій функції на всю глибину рекурсії
це ж краще.

ну так, але все залежить яка область видимості де ця num оголошується, якщо в глобальній області, то так, це є загрозою, наприклад, того що таку саму змінну вже використовує ще хтось окрім вас, тому рекомендується починати писати код з анонімної ф-ї, тоді всі змінні в області видимості цієї ф-ї будуть недоступними для інших:

console.log('num before function:', num);
(function(){
    var num=0;
    console.log(num);
})();
console.log('num after function:', num);

25

Re: Лічильник через рекурсію.

poperechnyi1 написав:

Доброго дня.
Дл таке завдання: створити лічильник через рекурсію.
Як це можна зробити?

var num;
    function sumTo(k){
        num = k;
        var res=0;
            for(var i = 0; i<num; i++){
                 sumTo(k-1);
                 console.log(res=res+1);
            }

        return res;
    }
    alert(sumTo(100));

Ось поки що написав такий код.

ваше запитання ніразу не зрозуміле

на всякий випадок залишу це тут
https://jsfiddle.net/ewz1f883/1/
ну і кодом, на випадок якщо в пісочниці пропаде

function values_tick(obj){
var timerId = setTimeout(function tick(obj, counter) {
  var i = 0;
  for(key in obj) {
    if(counter == i){
      console.log(key , '===', obj[key]);
    }
    i++;
  }
  timerId = setTimeout(tick, 2000, obj,counter + 1);
}, 2000, obj, 0);
}

values_tick({a:"one", b:"two", c:"tree" });

отак працює рекурсія по таймеру в js
конкретно тут -- вивід в консольку ключ-значення --- обхід обєкта
(так, знаю що можна/треба відрефакторити, проте для прикладу ймовірно може бути -- наглядно-зрозуміло ж)