在最近的一次采访中,我被问到一个问题,写一个递归函数来反转一个字符串,迭代版本是否比这个特定算法的递归函数更好。我不确定递归解决方案比迭代解决方案更糟糕/更好。任何人都可以帮我理解这个吗?递归与迭代在C#
是不是下面的代码是一个尾递归的?
public static string Reverse(string str)
{
return (str.Length <= 1 ? str : str[str.Length - 1]
+ Reverse(str.Substring(0, str.Length - 1)));
}
请看看[this] [1]是否回答你的问题。 [1]:http://stackoverflow.com/questions/159590/way-to-go-from-recursion-to-iteration – AksharRoop 2012-01-11 10:16:14
这不是尾递归。对于尾递归函数,最后调用的函数必须是函数本身。在这种情况下,所调用的最后一件事实际上是'+'操作。 – porges 2012-01-11 10:17:09
谢谢你指出这一点。 – blitzkriegz 2012-01-11 10:31:45