ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

递归,循环,迭代,枚举

2021-01-12 09:32:59  阅读:252  来源: 互联网

标签:语句 10 迭代 递归 while 枚举 循环 var man


递归,循环,迭代,枚举(个人所见,请指教)

〓递归(recursion)在数学与计算机科学中,是指在函数的定义中使用函数自身的方法。递归一词还较常用于描述以自相似方法重复事物的过程。例如,当两面镜子相互之间近似平行时,镜中嵌套的图像是以无限递归的形式出现的。

可以理解为:指的是一个函数不断调用自身的行为。

语言例子(Language examples):从前有座山,山里有座庙,庙里有个老和尚,正在给小和尚讲故事呢!故事是什么呢? “从前有座山,山里有座庙,庙里有个老和尚,正在给小和尚讲故事呢!故事是什么呢? “从前有座山,山里有座庙,庙里有个老和尚,正在给小和尚讲故事呢!故事是什么呢?……””

编程例子(Programming examples):各语言编写的一个递归例子,函数或过程会无限调用自身。理论上说它永远不会结束,实际上因为内存限制它会陷入死循环并崩溃,这种递归叫做无穷递归

递归函数(Recursion function):是在一个函数通过名字调用自身的情况下构成的,

js例子:
function man(num){
if(num<=1){
return 1;
}else{
return num*man(num-1); //调用了自身
}
}

var woman = man; //变量woman引用函数man
man = null;
alert(woman(6)); //报错,man is not a function
将man函数保存在变量woman中,然后将man变量设置为null,结果指向原始函数的引用就剩下一个,在调用woman()时,由于必须执行man(),而man已经不再是函数,所以导致出现了错误,

在这种情况下,使用arguments.callee可以解决问题arguments.callee是一个指向正在执行的函数的指针,因此可以用它来实现对函数的递归调用,

例如:
function man(num){
if (num <= 1) {
return 1;
}else {
return num * arguments.callee(num - 1); //通过使用arguments.callee代替函数名,可以确保无论怎么样调用函数都不会出问题
}
}

var woman = man; //变量woman引用函数man
man = null;
alert(woman(6)); // 720
〓循环(loop):指的是在满足条件的情况下,重复执行同一段代码。一般语言都会有三种类型的循环语句:for语句、while语句和do While语句。

可以理解为:循环就是迭代(重复)一些命令的代码块, 如果循环控制条件不满足的话, 就结束循环.

语言例子(Language examples):将一段音乐或声音反覆播放数次(无限次/无穷循环)。地球自转一次是一天,地球公转一次是一年。而人的年龄由于地球公转,相应在每次循环时,在原来的基础上增加了一岁。

JavaScript for循环例子:

/*

for语句是一种前测试循环语句,但它具有在执行循环之前初始化变量和定义循环后要执行的代码的能力,for语句语法:
语法:for (initialization; expression; post-loop-expression) statement
Small details:
1.for循环的变量初始化表达式中,也可以不使用var关键字。该变量的初始化可以在外部执行。(var i; for(i=0;i<count;i++){ do something})
1
2.使用while循环做不到的,使用for循环同样也做不到。也就是说for循环只是把循环有关的代码集中在了一个位置
1
3.for语句中的初始化表达式,控制表达式和循环后表达式都是可选的,如果省略就会是一个无限循环。(for(;

标签:语句,10,迭代,递归,while,枚举,循环,var,man
来源: https://blog.csdn.net/weixin_51111092/article/details/112506117

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有