Javascript не возвращает значение - PullRequest
0 голосов
/ 03 октября 2018

Ниже приведен пример очень простой рекурсивной функции.Как написано, код записывает все значения> = в n, но он НЕ возвращает строковое значение в блоке кода оператора if.Может кто-нибудь объяснить это поведение?

Заранее спасибо всем, кто проявит любезность, чтобы ответить на этот вопрос.

ПРИМЕЧАНИЕ: в моем первоначальном сообщении пропущено утверждение if.С тех пор я обновил его.

function recursiveFunction(n) {
        console.log(n)
        if(n <= 1) {
            return "done";
        } 
        else {
        recursiveFunction(--n);
        }
    }
recursiveFunction(5);

Ответы [ 4 ]

0 голосов
/ 03 октября 2018

Хорошо, я понял это.Я неумышленно пропустил утверждение if в оригинальном сообщении и с тех пор обновил его - извините за путаницуОднако я не собирался опускать ключевое слово return после оператора else.Я думал, что в функции может быть только один оператор return, но так как я использую рекурсию, оператор return после оператора else необходим для возврата нового значения в объявление функции.Таким образом, оператор return внутри блока else возвращает значение самой функции, тогда как оператор return в блоке if возвращает значение для вызова внешней функции.Если оператор return НЕ используется внутри блока else, он вернет значение для вызова внешней функции undefined.Я ценю все усилия, помогающие мне прийти к такому выводу.Пожалуйста, дайте мне знать, если это имеет смысл, или если я возможно сделал неправильный вывод.Ура

function recursiveFunction(n) {
        console.log(n)
        if(n <= 1) {
            return "done";
        } 
        else {
            return recursiveFunction(--n); // added the return keyword
        }
    }
recursiveFunction(5);
0 голосов
/ 03 октября 2018

function recursiveFunction(n) {
        console.log(n)
        if(n==0){            //you need an if statement        
            return  "done"
        }         
         return   recursiveFunction(--n)     
       
    }
  console.log(recursiveFunction(5))
0 голосов
/ 03 октября 2018

Попробуйте добавить оператор if.Я думаю, что это сработает.

:)

0 голосов
/ 03 октября 2018

function recursiveFunction(n) {
        console.log(n)
        if(n==0){            //you need an if statement        
            return  "done"
        } else {            
            return recursiveFunction(--n)     // return the recursive function   
        }                                     // with --n else there's no return
                                              // except when evaulated at 0
       
    }
  console.log(recursiveFunction(5))
...