「这是我参与11月更文挑战的第9天,活动详情查看:2021最后一次更文挑战」
编程了很多年,有时候会有一种恍惚的感觉 ” 我的人生好像也在递归、迭代和循环中不停的跳转“
那么,作为一个程序猿,你真的理解什么是递归、迭代和循环吗?
【今天我们就来详细的介绍一下他们三个到底是什么gui】
1、循环[ gui ]的特征:
- 循环的本质,就像一个迷宫,你在这个迷宫里面去探索每一种可能,直到你找到出来的路!
- 而在编程当中,便用两个单词来决定了循环:一个是
for(为了,给)、一个是while(当……时);而在这里的出路是指定的,也就是为了谁我愿意去循环,当什么时候,我愿意从循环里出来! - 在
for和while的基础上,我们又设计出了更多的玩法,比如:do-while、for-in、for-of; 当然,除了循环,我们还有自己的奢求【我想怎样就怎样】,然后就诞生了循环的控制手段:break、continue;
具体的语句特点解读:
- 循环的特点:谁的心要改变(变量)==> 什么条件下发生改变(条件) ==> 你好抓心(循环体内操作) ==> 我可以改变了(改变变量) ==> 不能再满足我,say拜拜(结束,抛出内心的一切);
while和for循环的特点:先判断,后执行(你够不够格,不够不要走进我的心里)do-while循环的特点:先执行,后判断(它先进来看看,行不行它说了【至少有一次机会】)for-in循环:遍历对象的常用方法for(keys in Cars){……}keys只能表示键值对的键名,要想获取object的val,只能通过keys的方法去获取obj[keys]==> 特殊功能,原型判断obj.hasOwnProperty(keys) == truefor-of循环:遍历所有数据结构的统一方法,获取对象的键值,(Symbol.iterator方法)使用的范围:Set和Map结构、某些类数组对象(arguments对象、DOM NodeList对象)、字符串、Generator对象;
for-in与for-of的独特之处:
for...in循环 ①数组的键名是数字,但是for...in循环是以字符串作为键名“0”、“1”、“2”等等。 ②for...in循环不仅遍历数字键名,还会遍历手动添加的其他键,甚至包括原型链上的键。 ③某些情况下,for...in循环会以任意顺序遍历键名。 for...in循环主要是为遍历对象而设计的,不适用于遍历数组。
for...of循环 有着同for...in一样的简洁语法,但是没有for...in那些缺点。 不同于forEach方法,它可以与break、continue和return配合使用。 提供了遍历所有数据结构的统一操作接口。
break与continue的分道扬镳:
break: 跳出本层循环,继续执行循环后面的语句。 如果循环有多层,则break只能跳出一层。 continue: 跳过本次循环剩余的代码,继续执行下一次循环。 ①对于for循环,continue之后执行的语句,是循环变量更新语句i++; ②对于while、do-while循环,continue之后执行的语句,是循环条件判断;
因此,使用这两个循环时,必须将
continue放到i++之后使用,否则,continue将跳过i++进入死循环。
2、循环?不够!递归来凑”giaoqi“
曾经在网络水文中有过这样的故事来描述递归的含义:”从前有座山,山里有座庙,庙里有个和尚,和尚在讲故事,从前有座山,山里有座庙,庙里有个和尚,和尚在讲故事,从前有座山...“。忽然觉得,这个小故事和递归的含义倒也贴切的很
抽象的理解:递归如同两面相对的镜子,你中有我,我中有你,有很多很多!但是,严格来说这并不是递归,也不是我们想要的递归(无脑循环下去也就是我们说的走不出去的死循环),因为递归类属于循环,但是它所执行的确实函数的复式调用,在这里存在一个终止条件、一个递归调用函数;而且递归的过程存在前行和退回阶段,也就是先执行调用函数前的内容,直到执行完内部调用函数最后一项跳出时,再执行调用函数后的内容。
//经典代码示例
function Recursion(depth){
console.log("抱着"); //前行阶段
if(!depth){
console.log("我的小鲤鱼") //结束后输出
}else{
Recursion(--depth); //递归调用
}
console.log("的我") //前行阶段结束
}
console.log("吓得我抱起了")
Recursion(2)
吓得我抱起了
抱着
抱着
抱着
我的小鲤鱼
的我
的我
的我
3、迭代是什么gui?
迭代是重复反馈过程的活动,其目的通常是为了逼近所需目标或结果。每一次对过程的重复称为一次“迭代”,而每一次迭代得到的结果会作为下一次迭代的初始值!(重复执行程序中的循环,知道满足某条件为止)
通常情况下,更接近于for语句的功能实现。
4、遍历
遍历指的是按照一定的规则访问树形结构中的每个节点,而且每个节点都只访问一次。
更多美文,解你迷惑:二叉树的三种遍历方法 复制带随机指针的链表