タイトルが示すように、私はJavaScriptの問題を再帰的に解決しようとしていました。私のインターネットプログラミングクラスの演習は、関数に入力された文字列を反転することでした。これは、再帰を使用してこれを解決する良い機会であると考えました。私のコード:
function reverseStr(str){
str = Array.from(str);
let fliparray = new Array(str.length).fill(0);
let char = str.slice(-1);
fliparray.push(char);
str.pop();
str.join("");
return reverseStr(str);
}
writeln(reverseStr("hello"))
最大の問題は、関数にエンド(ベース)ケースがないことです。いつ停止するかを認識する方法が必要です。そうしないと、永久に再発します。
2番目の問題は、実際には再帰的に考えていないように見えることです。文字列にいくつかの変更を加えていますが、変更された文字列reverseStr()
をもう一度呼び出すだけで、プロセスが最初からやり直されます。
以下は実際にはあなたの試みに似ていませんが(私はあなたの試みを救う方法がわかりません)、それは逆文字列アルゴリズムを再帰的に実装する簡単な方法です。
function reverseStr(str) {
// string is 0 or 1 characters. nothing to reverse
if (str.length <= 1) {
return str;
}
// return the first character appended to the end of the reverse of
// the portion after the first character
return reverseStr(str.substring(1)) + str.charAt(0);
}
console.log(reverseStr("Hello Everybody!"));
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加