3

私の演習では、次のプロトタイプを使用して、特定の文字列を逆にする再帰関数を記述する必要があると述べています。 void reverse(char s[]);

私が使用できる唯一の事前に作成された関数はstrlen()string.hライブラリからのものです。

どこから始めればよいかわかりません。

4

1 に答える 1

4

関数に実際の再帰を実行する別の関数を呼び出すことから始めます。

これは、よりよく知られている再帰的署名かもしれません:

void reverse(char s[]) 
{
    reverse_helper(s,strlen(s));
}

void reverse_helper(char s[], int position) 
{
 // actual recursive code goes here
}

ヘルパー関数を使用できないため:

これは宿題です。ただ答えが欲しいだけではないように思われるので、次の質問を自問してみてください。

あなたのベースケースは何ですか?

strlent(s) <= 1 //
strlen(s) == 2 で反転は必要ありません。再帰のない簡単な反転が必要です。

長さ 2 の char 配列を反転するのは簡単ですが、長さ 3 の char 配列を反転するにはどうすればよいでしょうか?

長さ 3 の配列から最後の文字を取り出し、長さ 2 の逆配列の先頭に配置します。

の再帰呼び出しには何を渡すのreverseですか?

1 サイズ小さい新しい char 配列。

于 2012-12-20T16:00:13.067 に答える