今天看到一篇博客介绍使用 Lambda 表达式递归计算 n!。使用了 C++14 的 generic lambda,给 Lambda 表达式加了一个模板参数,在函数调用的时候将 Lambda 表达式作为参数传递给下一层函数。这种方法每次调用函数的时候都要比常规的函数多传一个参数。我想起两年前也用 Lambda 表达式写过递归,利用了引用捕获和 std::function。以 n! 为例,代码为:
[code]#include #include int main(){ std::function f = [&f](int n) { if (n == 0 || n == 1) { return 1; } return n * f(n - 1); } std::cout |