次のタスクを実行するように指示された割り当てがあります。 "文字列を入力させてから、文字列の最初の文字を表示し、最後に2番目、最後に2番目、最後に3番目...だから、文字列が "abcdef"の場合、それは表示されます: afbecd(入力 "abcdef") " 私のアプローチですが、走る私の関数printLetters(文字列s)では12345、私は、その後、私はその後、完全な文字列12345を持って、インデックス0から始まる文字列をプリントアウト:私はexmapleです。ここ11に文字列mash(recursion)C++
#include <iostream>
#include <cmath>
using namespace std;
void printLetters(string s);
int main()
{
string sequence;
cout << "Enter a sequence: ";
getline(cin, sequence);
printLetters(sequence);
}
void printLetters(string s)
{
int a = floor(s.length()/2.0);
// stopping case
if(s == "")
{
return;
}
// reduce problem
printLetters(s.substr(0));
//cout << s[0];
cout << s[a];
}
をセグメンテーションフォールトを得ましたインデックスs.length()/ 2の中文字 "3"のコンテンツを "取り出す"。その後、文字列に戻り、インデックス0から始まる部分文字列を再び印刷しますが、今度は1245です。私が1になるまで手順を繰り返しています。講義では、私の教授は再帰がプロセスは、それは底から背中に戻って上に戻るでしょう。それから私が1に達すると、それは5,2,3,4に戻るでしょう。だから私は文字列 "15234"を印刷すると仮定しますが、私はしませんでした。あなたは何か考えているなら、私は聞いてうれしいです。どうもありがとう!
これは、文字列を逆にするために使用される別のコードです。私の教授はクラスで説明しました。それは彼がコードの背後に与えた論理でした。すべての
#include <iostream>
using namespace std;
void printString(string s);
int main()
{
printString("hello");
return 0;
}
void printString(string s)
{
if(s == "")
{
return;
}
printString(s.substr(1));
cout << s[0];
}
'floor(s.length()/ 2.0)'は 's.length()/ 2'としてよく書かれています。 – melpomene
あなたはどういう意味ですか?「今回は1245 *です。 's.substr(0)'は 's 'であり、' 12345'です。 – melpomene
最初にデバッガを使用してみてください... – Jepessen