1. // clang++ 3.5
  2. // maybe gcc 4.9 support it, but I don't test it
  3. #include<iostream>
  4. int main()
  5. {
  6. auto fac = [&](auto&& self, int x)->int{
  7. return x < ? : x * self(self, x - );
  8. };
  9. std::cout<<fac(fac, )<<std::endl; //
  10. return ;
  11. }
  12.  
  13. 作者:蓝色
  14. 链接:https://www.zhihu.com/question/27441424/answer/36643770
  15. 来源:知乎
  16. 著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
  1. // clang++ 3.5
  2. // maybe gcc 4.9 support it, but I don't test it
  3. #include<iostream>
  4. template<typename Functor>
  5. struct wrapper_type
  6. {
  7. Functor functor;
  8. template<typename... Args>
  9. decltype(auto) operator()(Args&&... args) const&
  10. {
  11. return functor(functor, std::forward<Args>(args)...);
  12. }
  13. };
  14.  
  15. template<typename Functor>
  16. wrapper_type<typename std::decay<Functor>::type> wrapper(Functor&& functor)
  17. {
  18. return{ std::forward<Functor>(functor) };
  19. }
  20.  
  21. int main()
  22. {
  23. auto fac = wrapper([&](auto&& self, int x)->int{
  24. return x < ? : x * self(self, x - );
  25. });
  26. std::cout << fac() << std::endl; //
  27. return ;
  28. }
  1. 作者:蓝色
  2. 链接:https://www.zhihu.com/question/27441424/answer/36643770
  3. 来源:知乎
  4. 著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
  1.  
  1. #include <iostream>
  2. #include <typeinfo>
  3. #include <functional>
  4. using namespace std;
  5. int main(void)
  6. {
  7. std::function<int(int)> product;
  8. product = [&product](int n) -> int{ return n <= ? : n * product(n - ); };
  9. cout << "The answer is: " << product() << endl;
  10. }
  11.  
  12. 链接:https://blog.csdn.net/zenny_chen/article/details/6045596

引用文章 如何在lambda中引入递归调用的更多相关文章

  1. 如何在jsp中引入bootstrap

    如何在jsp中引入bootstrap包: 1.首先在http://getbootstrap.com/上下载Bootstrap的最新版. 您会看到两个按钮: Download Bootstrap:下载 ...

  2. 如何在idea中引入一个新maven项目

    如何在idea中引入一个新的maven项目,请参见如下操作:      

  3. 尾递归 递归函数中,递归调用是整个函数体中最后的语句,且它的返回值不属于表达式的一部分时,这个递归调用就是尾递归,空间复杂度是O(1)

    什么是递归深度 递归深度就是递归函数在内存中,同时存在的最大次数. 例如下面这段求阶乘的代码: Java: int factorial(int n) { if (n == 1) { return 1; ...

  4. 如何在C#中引入CPLEX的dll(CPLEX系列-教程一)

    以前写在CSDN上的文章.转到博客园之后,打算把这个教程移过来,顺便完善后面的教程.主要是在Asp.Net+EF6里面使用cplex,完成一个最优生产计划的决策.当时在查找如何在C#中引用cplex时 ...

  5. [转]如何在Angular4中引入jquery

    本文转自:https://blog.csdn.net/home_zhang/article/details/77992734 1.anjq是我的项目名称: 在anjq目录下打开dos命令窗口,然后依次 ...

  6. Java中的递归调用

    Java中不合理的使用递归调用,可能会导致栈内存溢出,这点是需要注意的. java将为每个线程维护一个栈,栈里将为每个方法保存一个栈帧,栈帧代表了一个方法的运行状态. 也就是我们常说的方法栈.最后一个 ...

  7. 如何在vue中引入图片?

    当我们在Vue.js项目中引用图片时,关于图片路径有以下几种情形: 使用一. 我们在data里面定义好图片路径 imgUrl:'../assets/logo.png' 然后,在template模板里面 ...

  8. IOS开发问题录:如何在Swift中引入Head文件?

    最近在学习IOS开发,从一个简单的登录开始,逐步解决了一个网络访问.获取控件值等问题,遇到了信息加密的问题. 做为IOS的入门者,信息加密需要解决如下几个问题: 1.IOS的MD5加密有没有固定函数, ...

  9. 如何在html中引入jsx文件

    不使用webpack工具做react项目 1.引入react相关js文件 <script src="https://cdn.staticfile.org/react/16.4.0/um ...

随机推荐

  1. (15)模型层-什么是ORM

    ORM是什么 1.MVC或者MTV框架中包括一个重要的部分,就是ORM,它实现了数据模型与数据库的解耦,即数据模型的设计不需要依赖于特定的数据库,通过简单的配置就可以轻松更换数据库,这极大的减轻了开发 ...

  2. 【HAOI2016】放旗子

    终于自己推出来一道题了quq然而时间有点久,考场上并不大丈夫……原题: 给你一个N*N的矩阵,每行有一个障碍,数据保证任意两个障碍不在同一行,任意两个障碍不在同一列,要求你在这个矩阵上放N枚棋子(障碍 ...

  3. js判断输入的字符是否是汉字

    <script type="text/javascript"> var c=prompt("请输入一个字符"); var isNumber = c& ...

  4. day39KNN算法和其他的算法

    PS: 1.现在明白为什么其他的同学一直都在做数字图像处理,matlab这种东西了,因为机器学习,其他底层主要是做预先处理,然后调用某一个算法 2.感觉knn算法就是根据先验数据计算下一个跟自己一样不 ...

  5. day 05JVM和深入理解java虚拟机

    -----------------Java 虚拟机发展史 PS: Sun公司有 HotSpot, BEA公司有JRockit,IBM有 J9  这三个是高性能VM 在Oracle收购Sun和BEA这两 ...

  6. sudo权限的设置

    什么是sudo,为什么要sudo呢?就我个人愚见普通用户sudo之后拥有root用户的所有权限,其优点在于,虽然该用户拥有root权限,但他却不需要知道root用户密码,需要输入的是他本身的密码. 那 ...

  7. highcharts 知识点

    去掉版权: credits:{ enabled:true // 默认值,如果想去掉版权信息,设置为false即可 }

  8. 阿里云学习笔记之Java Web环境搭建

    1. 下载JDK7 http://www.oracle.com/technetwork/java/javase/downloads/java-archive-downloads-javase7-521 ...

  9. chmod命令详解

    Linux chmod命令 Linux/Unix 的文件调用权限分为三级 : 文件拥有者.群组.其他.利用 chmod 可以藉以控制文件如何被他人所调用. 使用权限 : 所有使用者 语法: chmod ...

  10. 开源截图工具cutycapt的安装及使用

    之前在安装过程中碰到很多问题,也找了不少资料.现总结了下,给有需要的朋友.centos下安装cutycapt比较麻烦,需要先安装qt47,再下载cutycapt源码编译;而在ubuntu下安装cuty ...