当前位置:网站首页>es6递归函数
es6递归函数
2022-08-09 11:09:00 【一头小驴】
首先看代码:
function tco(f) {
var value;
var active = false;
var accumulated = [];
return function accumulator() {
accumulated.push(arguments);
if (active ==false) {
active = true;
while (accumulated.length>0) {
console.log(accumulated);
console.log(accumulated.length);
value = f.apply(this, accumulated.shift());
}
active = false;
return value;
}
};
}
var ff = function(x, y) {
if (y > 0) {
return sum(x + 1, y - 1)
}
else {
return x
}
}
var sum = tco(ff);
console.log(sum);
var tt = sum(1, 5);
console.log(tt);
如上,是一个化递归为 while(true)循环的例子,然后 就是 apply方法 在传递参数的时候,会给上层 函数体的参数arguments赋值 从而 维持了while(true),可以验证。
(google f12开发者工具 source中调试js代码,断点,逐步,参数变量显示等等,还有控制台写代码的智能提示)
边栏推荐
- 爱可可AI前沿推介(8.9)
- centos7.5 设置Mysql开机自启动
- 七夕?程序员不存在的~
- pip common commands and changing source files
- Error: Cannot find module ‘./application‘
- 富媒体在客服IM消息通信中的秒发实践
- Qt获取EXE可执行文件的上一级目录下的文件
- Use gdb to debug multi-process programs, debug parent and child processes at the same time
- Oracle数据库体系结构
- PoseNet: A Convolutional Network for Real-Time 6-DOF Camera Relocalization Paper Reading
猜你喜欢
随机推荐
为什么组合优先于继承
1008 Elevator (20分)
grpc系列-初探grpc 路由注册和转发实现
学长告诉我,大厂MySQL都是通过SSH连接的
Since I use the HiFlow scene connector, I don't have to worry about becoming a "dropper" anymore
Error: Cannot find module ‘./application‘
PTA 指定位置输出字符串(c)
实现strcat函数
UNIX哲学
End-to-End Object Detection with Fully Convolutional Network学习笔记
CentOS6.5 32bit安装Oracle-11gR2步骤说明
无刷无霍尔BLCD电机控制
fork creates multiple child processes
MATLAB中如何把cftool拟合的函数输出到命令行(解决如何导出拟合后的曲线数据)
FreeRTOS列表和列表项源码分析
Cesium加载三维模型数据
MySQL查询性能优化七种武器之索引潜水
备份mongodb数据库(认证)
C语言统计不同单词数
STM32启动方式及BootLoader