我已經嘗試下面的遞歸字符串逆轉: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'陣列做什麼,我沒有得到評估。嘗試編寫一個沒有任何數組的代碼,只使用sting切片和連接。 – Bergi 2014-12-11 04:45:31
我原本是用while循環完成的。但我知道我不能像正常的那樣在遞歸函數中聲明變量。 – Rico 2014-12-11 04:51:50
好吧,你*可以*用內部函數做這樣的 - 在實際的遞歸函數之外聲明'results',這會佔用while循環的一部分(並且通過'j'遞歸);但我認爲這不是你鍛鍊的重點。 – Bergi 2014-12-11 04:53:50