1

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

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

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));

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

2

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

Вам там цикл не потрібен

3

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

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

4

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));
Ось поки що написав такий код.

сум(к): якщо к == 1 то 1 інакше к + сум(к - 1)

5

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

quez написав:
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));
Ось поки що написав такий код.

сум(к): якщо к == 1 то 1 інакше к + сум(к - 1)

Тоді в чому суть лічильника. якщо число введеться 0 то що виведеться не правильний результат. Хоч ім'я функції і схоже на приклад з сайту, але суть того лічильнака в тому що, він має порахувати до заданого числа.

6

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

mike написав:

Вам там цикл не потрібен

підкажіть будь-ласка як його зробити без циклу.
Лічильник має порахувати до заданого числа.
Якщо робив би повністю через цикл, то це б зайняло 3 хв, а от через рекурсію алгоритм так і не зрозумів для цього.

7

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

ping написав:

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

можна було так зробити, просто затупив

8

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

poperechnyi1 написав:
quez написав:
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));
Ось поки що написав такий код.

сум(к): якщо к == 1 то 1 інакше к + сум(к - 1)

Тоді в чому суть лічильника. якщо число введеться 0 то що виведеться не правильний результат. Хоч ім'я функції і схоже на приклад з сайту, але суть того лічильнака в тому що, він має порахувати до заданого числа.

Нуль, від'ємні числа, дійсні числа - при всіх них результат буде неправильним, тому вам доведеться враховувати або не враховувати можливість їх введення.

І яке завдання - обчислити суму від одиниці до к? Вивести всі числа від 1 до к? Що далі, то більше заплутуєте.

9 Востаннє редагувалося poperechnyi1 (01.02.2017 14:49:34)

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

І яке завдання - обчислити суму від одиниці до к? Вивести всі числа від 1 до к? Що далі, то більше заплутуєте.

Потрібно вивести вcі числа від одиниці до k

10

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

poperechnyi1 написав:

І яке завдання - обчислити суму від одиниці до к? Вивести всі числа від 1 до к? Що далі, то більше заплутуєте.

Потрыбно вивести вcі числа від одиниці до k

То що ж ви зразу не написали? Ще й навели код, який робить зовсім не те.

Принцип рекурсії зрозуміли чи ні?

11 Востаннє редагувалося poperechnyi1 (01.02.2017 14:53:52)

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

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

І яке завдання - обчислити суму від одиниці до к? Вивести всі числа від 1 до к? Що далі, то більше заплутуєте.

Потрыбно вивести вcі числа від одиниці до k

То що ж ви зразу не написали? Ще й навели код, який робить зовсім не те.

Принцип рекурсії зрозуміли чи ні?

ПРинцип рекурсії зрозумілий, функція викликає сама себе. Мій код робить не те бо я не можу зрозуміти як зробити, щоб він робив те, що треба. Просто треба ж було показати, що хоть щось зробив для вирішення,  а не просто клянчу.

12

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

Це той випадок, коли краще було не показувати. Покажіть краще, як ви викликаєте всередині функції її ж.

13 Востаннє редагувалося poperechnyi1 (01.02.2017 15:03:13)

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

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));

14

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

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

Вам там цикл не потрібен

підкажіть будь-ласка як його зробити без циклу.
Лічильник має порахувати до заданого числа.
Якщо робив би повністю через цикл, то це б зайняло 3 хв, а от через рекурсію алгоритм так і не зрозумів для цього.


ну наприклад ось так:

function counter(maxCount,startValue){
   if('undefined'==typeof startValue){
        startValue=0;
   }
   console.log(startValue);
   if(startValue>=maxCount)return;
   startValue++;
   counter(maxCount, startValue);

}

counter(100);
Подякували: poperechnyi11

15 Востаннє редагувалося ping (01.02.2017 15:11:35)

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

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

Потрыбно вивести вcі числа від одиниці до k

То що ж ви зразу не написали? Ще й навели код, який робить зовсім не те.

Принцип рекурсії зрозуміли чи ні?

ПРинцип рекурсії зрозумілий, функція викликає сама себе. Мій код робить не те бо я не можу зрозуміти як зробити, щоб він робив те, що треба. Просто треба ж було показати, що хоть щось зробив для вирішення,  а не просто клянчу.

тобто  - алгоритм такий має бути:
функція отримує аргумент, звіряє його з якоюсь умовою(наприклад - аргумент менший к), якщо не виконана - виводимо k аргумент і викликаємо себе знову інкрементувавши аргумент. і так -  до виконання умови.

16

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

А, не помітив її, тому що ніяк не очікував побачити її в циклі. Викиньте цей код і починайте заново. Цикл я вам використовувати забороняю.

Подякували: poperechnyi1, 221VOLT2

17

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

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

Вам там цикл не потрібен

підкажіть будь-ласка як його зробити без циклу.
Лічильник має порахувати до заданого числа.
Якщо робив би повністю через цикл, то це б зайняло 3 хв, а от через рекурсію алгоритм так і не зрозумів для цього.


ну наприклад ось так:

function counter(maxCount,startValue){
   if('undefined'==typeof startValue){
        startValue=0;
   }
   console.log(startValue);
   if(startValue>=maxCount)return;
   startValue++;
   counter(maxCount, startValue);

}

counter(100);

Після вашої підказки зрозумів, що в рекурсії я нічого не розібрав.

18

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

quez написав:

А, не помітив її, тому що ніяк не очікував побачити її в циклі. Викиньте цей код і починайте заново. Цикл я вам використовувати забороняю.

Дякую спробую розыбратися ще раз, повныстю заново.

Подякували: mike1

19

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

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

підкажіть будь-ласка як його зробити без циклу.
Лічильник має порахувати до заданого числа.
Якщо робив би повністю через цикл, то це б зайняло 3 хв, а от через рекурсію алгоритм так і не зрозумів для цього.


ну наприклад ось так:

function counter(maxCount,startValue){
   if('undefined'==typeof startValue){
        startValue=0;
   }
   console.log(startValue);
   if(startValue>=maxCount)return;
   startValue++;
   counter(maxCount, startValue);

}

counter(100);

Після вашої підказки зрозумів, що в рекурсії я нічого не розібрав.

рекурсія це така штука яка потребує зрозуміти суть рекурсії, яка в свою чергу потребує зрозуміти суть рекурсії, яка в свою чергу потребує зрозуміти суть рекурсії... :D

20

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

ping написав:

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

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