gpt4 book ai didi

c++ - 提升 lambda 递归?

转载 作者:行者123 更新时间:2023-11-28 07:44:28 26 4
gpt4 key购买 nike

boost::lambda 可以递归使用吗?

这不编译:

using namespace boost::lambda;

auto factorial = (_1 == 0) ? 1 : factorial(_1-1);

是否有建议的解决方法?

编辑:关于使用 C++11 lambdas:以下内容无法在 VS2012 上编译:

std::function<int(int)> factorial;
factorial = [&factorial](int p)->int { return (p == 0) ? 1 : p*factorial(p-1); };

int main(int argc, char* argv[])
{
int i = factorial(5);
return 0;
}

另一个编辑:奇怪的是,这个工作正常:

std::function<int(int)> factorial =
[&](int p)->int { return (p == 0) ? 1 : p*factorial(p-1); };

int main(int argc, char* argv[])
{
int i = factorial(5);
return 0;
}

最佳答案

Lambda 函数无法直接调用自身,因为它们没有名称。

解决方法很简单:使用命名函数。

关于c++ - 提升 lambda 递归?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15164695/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com