1
我試圖寫一個函數來檢查一個字符串是否是迴文,並使用this example,我試圖使用遞歸匿名函數來扭轉字符串:StackOverflowException遞歸匿名函數
static Boolean checkPalindromeAnonRec(string str)
{
str = str.ToLower().Replace(" ", String.Empty);
Func<string, string> revStr = null;
revStr = delegate(string s)
{
if (s.Length > 1)
{ return revStr(s) + s[0]; }
else
{ return s; }
};
return (str == revStr(str));
}
但每次運行時,我都會得到StackOverflowException
。這對我而言並不明顯,爲什麼,有什麼想法?
多麼尷尬。一直應該是'return revStr(s.Substring(1))+ s [0]'。 – Jellezilla
只是試了一下。與匿名函數 – Jellezilla
+1相比,它對命名函數的實際執行效果更好。當你完成修復代碼時,要正確地匿名遞歸:[C#中的匿名遞歸](http://blogs.msdn.com/b/wesdyer/archive/2007/02/02/anonymous-recursion-in-c .aspx) –