Я попытался рекурсивное изменение строки ниже:JavaScript рекурсии обратная строка
function reverse(str){
var results =[];
var j =0;
if(str.length === 0){
console.log('this is zero, yo');
return results.join('');
}
results[j] = str[str.length -1];
console.log('results: ' + results);
j++;
var next = str.substring(0,str.length -1);
console.log(next);
return reverse(next);
}
try{
console.log('***');
console.log(reverse('testing'));
}
catch(e){
console.log('blew the stack');
}
, к сожалению, результаты создается в пустой строке в последний раз при запуске функции. Должен ли я создать внутреннюю функцию, которая возвращает results
, поэтому она не установлена в пустую строку? Является ли этот код закрытым?
редактировать: это ради любопытства, я пытаюсь не использовать функции, которые делают его очень легко (обратный())
Я не получить то, что вы хотите сделать с этим 'results' массива. Попытайтесь написать код без каких-либо массивов, только используя нарезку и конкатенацию скринов. – Bergi
Я изначально сделал это, используя цикл while. но я узнаю, что я не могу объявлять переменные в рекурсивных функциях, как обычные. – Rico
Ну, вы можете * сделать это с помощью внутренней функции - объявить «результаты» вне фактической рекурсивной функции, которая займет часть цикла while (и recurse over 'j'); но я думаю, что это не вопрос вашего упражнения. – Bergi