博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
javascript递归函数
阅读量:5262 次
发布时间:2019-06-14

本文共 1372 字,大约阅读时间需要 4 分钟。

递归函数:是指函数直接或间接调用函数本身,则称该函数为递归函数。

这句话理解起来并不难,从概念上出发,给出以下的例子:

function foo(){    console.log("函数 foo 是递归函数。");    foo();}

这个例子的 foo 函数就是一个递归函数。

当你把这个函数拿到浏览器上运行的时候,你会发现内存溢出了,为什么呢?因为这个递归函数没有停止处理或运算的出口,因此

这个递归函数就演变为一个死循环。

那如何使用递归呢?

 

使用递归函数必须要符合两个条件:

1、 在每一次调用自己时,必须是(在某种意义上)更接近于解;

这句话怎么理解?

大家家里都有楼梯吧?比如从一楼走到二楼,那么我们的起点是一楼,目的地是二楼,当你往上每走一个台阶是不是越接近二楼,也就是越接近目的地。

因此这句话可以这样理解:函数每一次调用自己时,就越接近于我们期望它完成的任务的终点。

2、必须有一个终止处理或计算的出口。

这句话的意思是:必须要有一个标准的标志,让函数结束调用函数自身。

比如,怎么知道你已经走到二楼了呢?当你看到有个门,门牌上写着 2F 的,然后推开它跨过去,那么你就到二楼了。

 

用递归输出对象里包含的所有属性值(包括对象里的子孙对象):

var obj = {    a:{        name:"john",        age:26,        sex:"male",        child:{            firstChild:"mak",            laseChild:"loy"        }    },    b:{        name:"joe",         age:28,         sex:"female",         child:{            firstChild:"bill",             secondChild:"ruth",             laseChild:"yoki"        }    }};function getObjValue(obj){    for(var k in obj){        if(typeof obj[k] !== "object"){            console.log(obj[k]); //递归出口        }else{            getObjValue(obj[k]); //函数调用函数自身        }    }};getObjValue(obj);// 输出结果:// name=john// age=26// sex=male// firstChild=mak// laseChild=loy// name=joe// age=28// sex=female// firstChild=bill// secondChild=ruth// laseChild=yoki

 

使用建议:在使用递归时,要注意对递归函数的参数类型的检查,一定要保证有一个终止处理或计算的出口。否则很容易演变为死循环,从而造成内存溢出。

转载于:https://www.cnblogs.com/jofun/p/8727858.html

你可能感兴趣的文章
tomcat7的数据库连接池tomcatjdbc的25个优势
查看>>
Html 小插件5 百度搜索代码2
查看>>
java.io.IOException: read failed, socket might closed or timeout, read ret: -1
查看>>
java 常用命令
查看>>
卷积中的参数
查看>>
51nod1076 (边双连通)
查看>>
ViewPager的onPageChangeListener里面的一些方法参数:
查看>>
Jenkins关闭、重启,Jenkins服务的启动、停止方法。
查看>>
Linux pipe函数
查看>>
java equals 小记
查看>>
2019春 软件工程实践 助教总结
查看>>
Zerver是一个C#开发的Nginx+PHP+Mysql+memcached+redis绿色集成开发环境
查看>>
多线程实现资源共享的问题学习与总结
查看>>
java实现哈弗曼树
查看>>
程序的静态链接,动态链接和装载 (补充)
查看>>
关于本博客说明
查看>>
线程androidAndroid ConditionVariable的用法
查看>>
转载:ASP.NET Core 在 JSON 文件中配置依赖注入
查看>>
代码变量、函数命名神奇网站
查看>>
redis cli命令
查看>>