C++ Lambda 表达式递归写法

立山  金牌会员 | 2022-8-21 12:41:11 | 显示全部楼层 | 阅读模式
打印 上一主题 下一主题

主题 700|帖子 700|积分 2100

今天看到一篇博客介绍使用 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
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

立山

金牌会员
这个人很懒什么都没写!

标签云

快速回复 返回顶部 返回列表