【发布时间】:2009-11-20 15:36:48
【问题描述】:
我在玩去年出现的code golf question yesterday for building a christmas tree,我拼凑了一个快速递归算法来完成这项工作:
static string f(int n, int r)
{
return "\n".PadLeft(2 * r, '*').PadLeft(n + r)
+ (r < n ? f(n, ++r) : "*".PadLeft(n));
}
我想知道我是否可以用 Func 做同样的事情:
Func<int,int,string> f = (n, r) => {
return "\n".PadLeft(2 * r, '*').PadLeft(n + r)
+ (r < n ? f(n, ++r) : "*".PadLeft(n));
};
这个会完成这项工作,只是递归部分不承认对 f 的调用实际上是对自身的调用。这会让我得出结论,Func 不能递归地调用自己 - 但我想知道我是否得出错误的结论,或者它是否可以完成但需要不同的方法。
有什么想法吗?
【问题讨论】: