引用文章 如何在lambda中引入递归调用
- // clang++ 3.5
- // maybe gcc 4.9 support it, but I don't test it
- #include<iostream>
- int main()
- {
- auto fac = [&](auto&& self, int x)->int{
- return x < ? : x * self(self, x - );
- };
- std::cout<<fac(fac, )<<std::endl; //
- return ;
- }
- 作者:蓝色
- 链接:https://www.zhihu.com/question/27441424/answer/36643770
- 来源:知乎
- 著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
- // clang++ 3.5
- // maybe gcc 4.9 support it, but I don't test it
- #include<iostream>
- template<typename Functor>
- struct wrapper_type
- {
- Functor functor;
- template<typename... Args>
- decltype(auto) operator()(Args&&... args) const&
- {
- return functor(functor, std::forward<Args>(args)...);
- }
- };
- template<typename Functor>
- wrapper_type<typename std::decay<Functor>::type> wrapper(Functor&& functor)
- {
- return{ std::forward<Functor>(functor) };
- }
- int main()
- {
- auto fac = wrapper([&](auto&& self, int x)->int{
- return x < ? : x * self(self, x - );
- });
- std::cout << fac() << std::endl; //
- return ;
- }
- 作者:蓝色
- 链接:https://www.zhihu.com/question/27441424/answer/36643770
- 来源:知乎
- 著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
- #include <iostream>
- #include <typeinfo>
- #include <functional>
- using namespace std;
- int main(void)
- {
- std::function<int(int)> product;
- product = [&product](int n) -> int{ return n <= ? : n * product(n - ); };
- cout << "The answer is: " << product() << endl;
- }
- 链接:https://blog.csdn.net/zenny_chen/article/details/6045596
引用文章 如何在lambda中引入递归调用的更多相关文章
- 如何在jsp中引入bootstrap
如何在jsp中引入bootstrap包: 1.首先在http://getbootstrap.com/上下载Bootstrap的最新版. 您会看到两个按钮: Download Bootstrap:下载 ...
- 如何在idea中引入一个新maven项目
如何在idea中引入一个新的maven项目,请参见如下操作:
- 尾递归 递归函数中,递归调用是整个函数体中最后的语句,且它的返回值不属于表达式的一部分时,这个递归调用就是尾递归,空间复杂度是O(1)
什么是递归深度 递归深度就是递归函数在内存中,同时存在的最大次数. 例如下面这段求阶乘的代码: Java: int factorial(int n) { if (n == 1) { return 1; ...
- 如何在C#中引入CPLEX的dll(CPLEX系列-教程一)
以前写在CSDN上的文章.转到博客园之后,打算把这个教程移过来,顺便完善后面的教程.主要是在Asp.Net+EF6里面使用cplex,完成一个最优生产计划的决策.当时在查找如何在C#中引用cplex时 ...
- [转]如何在Angular4中引入jquery
本文转自:https://blog.csdn.net/home_zhang/article/details/77992734 1.anjq是我的项目名称: 在anjq目录下打开dos命令窗口,然后依次 ...
- Java中的递归调用
Java中不合理的使用递归调用,可能会导致栈内存溢出,这点是需要注意的. java将为每个线程维护一个栈,栈里将为每个方法保存一个栈帧,栈帧代表了一个方法的运行状态. 也就是我们常说的方法栈.最后一个 ...
- 如何在vue中引入图片?
当我们在Vue.js项目中引用图片时,关于图片路径有以下几种情形: 使用一. 我们在data里面定义好图片路径 imgUrl:'../assets/logo.png' 然后,在template模板里面 ...
- IOS开发问题录:如何在Swift中引入Head文件?
最近在学习IOS开发,从一个简单的登录开始,逐步解决了一个网络访问.获取控件值等问题,遇到了信息加密的问题. 做为IOS的入门者,信息加密需要解决如下几个问题: 1.IOS的MD5加密有没有固定函数, ...
- 如何在html中引入jsx文件
不使用webpack工具做react项目 1.引入react相关js文件 <script src="https://cdn.staticfile.org/react/16.4.0/um ...
随机推荐
- (15)模型层-什么是ORM
ORM是什么 1.MVC或者MTV框架中包括一个重要的部分,就是ORM,它实现了数据模型与数据库的解耦,即数据模型的设计不需要依赖于特定的数据库,通过简单的配置就可以轻松更换数据库,这极大的减轻了开发 ...
- 【HAOI2016】放旗子
终于自己推出来一道题了quq然而时间有点久,考场上并不大丈夫……原题: 给你一个N*N的矩阵,每行有一个障碍,数据保证任意两个障碍不在同一行,任意两个障碍不在同一列,要求你在这个矩阵上放N枚棋子(障碍 ...
- js判断输入的字符是否是汉字
<script type="text/javascript"> var c=prompt("请输入一个字符"); var isNumber = c& ...
- day39KNN算法和其他的算法
PS: 1.现在明白为什么其他的同学一直都在做数字图像处理,matlab这种东西了,因为机器学习,其他底层主要是做预先处理,然后调用某一个算法 2.感觉knn算法就是根据先验数据计算下一个跟自己一样不 ...
- day 05JVM和深入理解java虚拟机
-----------------Java 虚拟机发展史 PS: Sun公司有 HotSpot, BEA公司有JRockit,IBM有 J9 这三个是高性能VM 在Oracle收购Sun和BEA这两 ...
- sudo权限的设置
什么是sudo,为什么要sudo呢?就我个人愚见普通用户sudo之后拥有root用户的所有权限,其优点在于,虽然该用户拥有root权限,但他却不需要知道root用户密码,需要输入的是他本身的密码. 那 ...
- highcharts 知识点
去掉版权: credits:{ enabled:true // 默认值,如果想去掉版权信息,设置为false即可 }
- 阿里云学习笔记之Java Web环境搭建
1. 下载JDK7 http://www.oracle.com/technetwork/java/javase/downloads/java-archive-downloads-javase7-521 ...
- chmod命令详解
Linux chmod命令 Linux/Unix 的文件调用权限分为三级 : 文件拥有者.群组.其他.利用 chmod 可以藉以控制文件如何被他人所调用. 使用权限 : 所有使用者 语法: chmod ...
- 开源截图工具cutycapt的安装及使用
之前在安装过程中碰到很多问题,也找了不少资料.现总结了下,给有需要的朋友.centos下安装cutycapt比较麻烦,需要先安装qt47,再下载cutycapt源码编译;而在ubuntu下安装cuty ...