2017-11-30 8 views
-4

私は再帰について学んでいます。何かを入力して同じ文字列を返す関数を作成したいのですが、その論理を見つけることができません。再帰の使い方を理解しようとしているC#

public static string Reverse(string text, int textlength) 
    { 
     if (textlength== 0) 
     { 
      return text.ElementAt(textlength).ToString(); 
     } 
     else 
     { 
      return Reverse(text, textlength - 1); 
     }   
    } 

どのように再帰を使用して行うことができますか?

+2

'text.ElementAt(-1)'は何を返すと思いますか? – NetMage

+0

は、最初の文字を返す必要があると仮定し、その単語が "文字"であると仮定すると、最後の繰り返しとして "l"を返します –

+0

@JavierSalas soooooはこのように動作しますか? –

答えて

1

再帰は常に2つのケース、基本ケースと再帰ケースです。

ベースケースは、文字列が0または1文字の場合です。逆はそのまま渡されたものなので、textを返します。

再帰的な場合は、textが1文字より長い場合は、それ自体で操作を定義する必要があります。この場合、文字列の逆は、残りの文字列の後に最初の文字が続く逆です。

public static string Reverse(string text) { 
    if (text.Length <= 1) // base case 
     return text; 
    else // recursive case 
     return Reverse(text.Substring(1))+text.Substring(0, 1); 
} 
関連する問題