【发布时间】:2019-08-09 14:38:25
【问题描述】:
如何将此方法转换为递归方法?我无法定义基本条件和结束条件。如何减少或增加结束条件以满足基本条件?
private string ReverseString(string s)
{
char[] array = new char[s.Length];
int index = 0;
for (int i = s.Length - 1; i >= 0; i--)
{
array[index++] = s[i];
}
return new string(array);
}
使用字符串生成器
private string ReverseLetter(string letter)
{ //copy to stack
Stack<char> stack = new Stack<char>();
foreach (char ch in letter)
stack.Push(ch);
//read the stack into a string
StringBuilder sb = new StringBuilder(10);
while (stack.Count > 0)
{
sb.Append(stack.Pop());
}
return sb.ToString();
}
【问题讨论】:
-
你有什么理由不使用 stringbuilder 吗?
-
我能理解这个问题是作业还是什么,否则,递归不是一个“好”的方法。
-
是的,这是我必须做的任务。我确实有一个字符串生成器方法,我发布的方法让我更容易理解。
-
你对递归了解多少?只需要几件事:1.返回具体值的“基本”案例,2.处理更大问题并使其更小的方法(这成为递归调用)。例如,要获取数字列表的总和,您可以删除一个数字并将其添加到从较小列表中获取总和的递归调用的结果中。基本情况是列表包含一个项目,而您只需返回该项目。
-
多么愚蠢的任务。字符串是一种线性数据结构,用递归来处理它是完全错误的。递归最适合嵌套数据结构。 “正确”的解决方案是拒绝分配。
标签: c# arrays string recursion reverse