反向字符串方法

mat*_*129 0 c# recursion

我在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))

我的错是什么?谢谢

Mat*_*hew 9

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调用,因为递归最终成为字符串的结尾.然后当堆栈开始关闭时,它会打印早期的字符.