我在C#中有一个很好的谜语(我是初学者).我需要递归保留一个字符串(在一个方法中).我试过了:
public static void ReverseString(string str)
{
if(str.Length > 0)
{
char ch = str[str.Length-1];
ReverseString(str.Substring(0,str.Length-2));
Console.Write(ch);
}
}
Run Code Online (Sandbox Code Playgroud)
但它不起作用.我被允许只改变第一行的2个文本if.(str[str.Length-1]和str.Substring(0,str.Length-2))
我的错是什么?谢谢
public static void ReverseString(string str)
{
if(!String.IsNullOrEmpty(str))
{
char ch = str[0];
ReverseString(str.Substring(1));
Console.Write(ch);
}
}
Run Code Online (Sandbox Code Playgroud)
为了解释发生了什么,Console.Write首先执行最内部的get调用,因为递归最终成为字符串的结尾.然后当堆栈开始关闭时,它会打印早期的字符.