Tôi đang chơi xung quanh với một code golf question yesterday for building a christmas tree đó đến khoảng năm ngoái và tôi đã ném cùng một thuật toán đệ quy nhanh chóng để thực hiện công việc:Func <> có thể tự gọi là đệ quy không?
static string f(int n, int r)
{
return "\n".PadLeft(2 * r, '*').PadLeft(n + r)
+ (r < n ? f(n, ++r) : "*".PadLeft(n));
}
tôi đã tự hỏi nếu tôi có thể làm điều tương tự với một Func:
Func<int,int,string> f = (n, r) => {
return "\n".PadLeft(2 * r, '*').PadLeft(n + r)
+ (r < n ? f(n, ++r) : "*".PadLeft(n));
};
này sẽ thực hiện công việc ngoại trừ phần đệ quy không nhận ra rằng cuộc gọi đến f thực sự là một lời kêu gọi của chính nó. Điều này sẽ dẫn tôi đến kết luận rằng một Func không thể tự gọi một cách đệ quy - nhưng tôi tự hỏi liệu tôi có đưa ra kết luận sai hay nếu nó có thể được thực hiện nhưng yêu cầu một cách tiếp cận khác.
Bất kỳ ý tưởng nào?
Giống như http://stackoverflow.com/questions/1079164/c-recursive-functions-with-lambdas? –