博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
由“递归遍历二叉树”引发的思考
阅读量:6072 次
发布时间:2019-06-20

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

由“递归遍历二叉树”引发的思考

递归的用法我感觉自己已经掌握了,可是今天在递归遍历二叉树时,它又迷一样令我费解。我本人在算法这一块很薄弱,所以想把这个问题发出来,希望有大神能够为我解答;同时也希望能帮助到那些对“递归”一知半解的朋友。

蜜桃猫镇楼 (ง •_•)ง

首先创建一个对象

//创建一个对象var obj = {    key:1,    next: {        key: 2,        next: {            key: 3,            next: {                key: 4,                next: {                    key: null                    next: null                }            }        }    }}复制代码

然后递归输出key

//递归输出keyfunction Recursion(obj) {    if(obj.next !== null) {                console.log(obj.key) //1        Recursion(obj.next) //2    }}Recursion(obj)复制代码

至此一个非常正经的递归就实现了,浏览器里面输出1,2,3,4,非常好理解,但是把//1和//2调换下位置,像下面这样

将上面代码1和2交换位置

//递归输出keyfunction Recursion(obj) {    if(obj.next !== null) {                Recursion(obj.next) //2        console.log(obj.key) //1    }}Recursion(obj)复制代码

我惊奇的发现...key的输出顺序反了,变成4,3,2,1,为什么会这样呢?于是我在Chrome里面设置断点调试,过程如下

1.传入obj对象

2.此时obj不为空,key为1,next指向2,控制台没有输出信息
3.此时obj不为空,key为2,next指向3,控制台没有输出信息
4.此时obj不为空,key为3,next指向4,控制台没有输出信息
5.此时obj不为空,key为4,next指向null,控制台没有输出信息
6.此时obj不为空,key为null,next为null,控制台没有输出信息
7.序继续往下执行
然后我就发现
console.log(obj.key)执行了四次!!依次打印出
4,3,2,1,为什么会这样??它不应该执行一次后就直接结束了吗?这里我一直想不通。我有一个猜测就是可能每次递归调用的时候,浏览器将函数压入栈中才导致输出结果反转的。至于
console.log(obj.key)为什么会执行四次,我就想不通了,希望有懂的朋友不吝赐教~

我表达的可能不是很清楚,大家可以把这两段代码放到本地执行看看;

我的问题就是 1.为什么console.log(obj.key)执行了四次?是什么原因导致的~~~~

转载于:https://juejin.im/post/5c2e1ecb518825124e277a41

你可能感兴趣的文章
总结最近学的struts学习笔记《1》
查看>>
windows server 2008系统IOS镜像下载地址
查看>>
Sharesdk 2.6.1 真坑
查看>>
python登录加随机验证码校验程序(装饰器内置函数的理解)
查看>>
adt 升级r22 之后ClassNotFoundException的解决方法
查看>>
脚本练习(1)
查看>>
Android_调试命令
查看>>
学习笔记之爬虫篇
查看>>
linux shell中find的使用
查看>>
mysql-mmm主主复制
查看>>
vim复制,粘贴,删除,撤销,替换,光标移动等用法
查看>>
数据库纯净下的主从复制
查看>>
salt state——salt的集中安装与配置(1)
查看>>
Ubuntu lnmp环境安装扩展插件mcrypt和crul
查看>>
华硕笔记本更换操作系统的一波三折的遭遇
查看>>
Jenkins 如何配置发邮箱
查看>>
VSAN API 探索第 7 部分 – VSAN 数据存储文件夹管理
查看>>
WebAPi的可视化输出模式(RabbitMQ、消息补偿相关)所有webapi似乎都缺失的一个功能...
查看>>
js练习本
查看>>
mysql的innodb中事务日志ib_logfile
查看>>