测试环境VC2022
void T01()
{
auto lpfn = [](int x, auto f)->int
{
if (x == 1)
return 1;
return x * f(x - 1, f);
};
int xx = lpfn(12, lpfn);
}
以上是计算12以内阶乘的一个测试函数,函数名无法放在中括号里就放到小括号,做为一个参数传递。在VS2002中测试通过
这种方式还可以多个函数互调:
void T02()
{
auto lpfn1 = [](int x, auto f1, auto f2)->int
{
if (x == 1)
return f2();
return x * f1(x - 1, f1, f2);
};
auto lpfn2 = [lpfn1]()->int
{
//lpfn1(0, lpfn1, lpfn1); //通不过编译
return 1;
};
int x = lpfn1(10, lpfn1, lpfn2);
//int y = lpfn1(10, lpfn2, lpfn1); //这行通不过编译
}
本文展示了如何在C++中使用Lambda表达式实现递归函数,包括一个计算阶乘的示例和多函数互相调用的场景。在Visual Studio 2022环境下测试通过,但在VS2002中也兼容。
2188

被折叠的 条评论
为什么被折叠?



