【发布时间】:2013-01-10 00:26:12
【问题描述】:
这是一个普通的旧递归函数:
int fak(int n)
{
return (n <= 1) ? 1 : n * fak(n - 1);
}
如何将这样的递归函数写成 lambda 函数?
[](int n) { return (n <= 1) ? 1 : n * operator()(n - 1); }
// error: operator() not defined
[](int n) { return (n <= 1) ? 1 : n * (*this)(n - 1); }
// error: this wasn't captured for this lambda function
是否有任何表达式表示当前的 lambda,以便它可以递归地调用自己?
【问题讨论】:
-
可能有巨大的 std::function 开销或多态 lambdas。
-
@MichaelBurr,你有很好的链接。
-
糟糕 - 我不小心删除了我的评论。这是后面的链接:blogs.msdn.com/b/vcblog/archive/2008/11/18/…
-
@MichaelBurr,这很有趣。我觉得你不小心删除了你的评论的想法很可笑,但我可以理解做这样的事情是多么容易:p
-
我要把这个留在这里slideshare.net/adankevich/c11-15621074 29 slide
标签: c++ recursion c++11 lambda