最近面接で聞かれました。最近卒業したばかりで、プログラミングを約 2 年 (すべて学業) しか行っていないので、途方に暮れていました。漠然とした考えはありましたが、間違いなく失敗しました。これは私が書いたものです:
string Reverse(string word, string reversed)
{
if(word.length() == 0)
{
return reversed;
}
else
{
string temp;
reversed = word.substr(0,1) + reversed;
temp = word.substr(1);
Reverse(temp, reversed);
}
return reversed;
}
家に帰ってテストしていると、リターンは入力の最初の文字だけです。私は再帰の概念に漠然と精通していますが、明らかにこれに失敗しています。ヘルプ/ポインター/提案は大歓迎です。ありがとうございました。
編集: Dennis Meng の投稿に続いて、次の変更を加えました。
string Reverse(string word, string reversed)
{
if(word.length() == 0)
{
return reversed;
}
else
{
string temp;
reversed = word.substr(0,1) + reversed;
temp = word.substr(1);
return Reverse(temp, reversed);
}
}
これで、適切な戻り値が得られました。どうもありがとうございました。