Проблема в программе рекурсии для печати номеров - PullRequest
0 голосов
/ 19 марта 2020

У меня проблема с программой ниже, под номером программы печати от 1 до 9, но я хочу также напечатать номер 10, как я могу это сделать?

function a(n){
    if(n == 1){
        return;
    }
    a(--n);
    console.log("hello world = ",n);    
}

a(10);

1 Ответ

3 голосов
/ 19 марта 2020

Вам нужно переключить условие выхода и вызывать функцию, только если у вас есть номер, который не равен нулю.

function a(n) {
    if (n !== 1) a(n - 1);
    console.log("hello world =", n);
}

a(10);

Имеется

function a(n){
    if (n == 1) {                     // exit condition
        return;                       // end of function run
    }
    a(--n);                           // mutating variable
    console.log("hello world = ", n);
}

условие выхода, которое проверяет значение и завершает функцию. Это предотвращает печать последнего значения.

Еще одна проблема - отмена n путем повторного вызова функции. Используемая позже переменная dos больше не имеет первоначального значения.

Путем изменения функции выхода на проверку необходимости повторного вызова функции, в отличие от выхода, она позволяет запускаться для каждого требуемого числа и выполнять выход.

Если вы просто измените --n на n - 1, вам понадобится другой выход для 1.

function a(n){
    if (n == 1) {
        console.log("hello world = ", n); // add another output here for 1
        return;
    }
    a(n - 1);
    console.log("hello world = ", n);
}

a(10);
...