HTML-JS 循环 函数 递归

【循环结构的执行步骤】
1、声明循环变量
2、判断循环条件
3、执行循环体操作
4、更新循环变量
然后,循环执行2-4,直到条件不成立时,跳出循环。
while循环()中的表达式,运算结果可以是各种类型,但是最终都会转化为真假
转化规则同if结构。

while循环特点:先判断,再执行。
do-while循环特点:先执行,再判断;即使初始条件不成立,do-while循环也至少执行一次。

// var num=1;//1、声明循环变量
// while (num<=10){//2、判断循环条件
// document.write(num+"<br />");//3、执行循环体操作
// num++;//4、更新循环变量
// }

【for循环】
1、for循环有三个表达式:①声明循环变量;②判断循环条件;③ 更新循环变量。
三个表达式之间用;分隔;
for循环三个表达式都可以省略,但是两个;缺一不可。

2、for循环的执行特点:先判断,再执行。与while相同。
3、for循环三个表达式,都可以有多部分组成。第二部分多个判断条件用&& || 连接,
第一三部分,用,分隔。

[循环控制语句]
 1、break:跳出本层循环,继续执行循环后面的语句。
 如果循环有多层嵌套,则break只能跳出一层。
 2、continue:跳过本次循环剩余的代码,继续执行下一次循环。
 ① 对于for循环,continue之后执行的语句,是循环变量更新语句i++
 ② 对于while do-while循环,continue之后执行的语句,是循环条件判断。
 因此,使用这两个循环时,必须将continue放到i++之后使用。否则,continue将* 跳过i++导致死循环。

例题:

输入N个数,实现从1加到N

var count = prompt("请输入整数个数:");
			var i = 0;
			var sum = 0;
			while (i<count){
				var num = parseInt(prompt("请输入第"+(i+1)+"整数:"));
				if(i==count-1) document.write(num+"=");
				else document.write(num+"+");
				sum += num;
				i++;
			}
			document.write(sum);

  求斐波那契数列

var a=1;
            var b=1;
            var c=a+b;
            document.write("1 "+1+" ");
            for (var i=1;i<18;i++) {
                a=b;
                b=c;
                c=a+b;
                if ((i+2)%5==0&&(i+2)!=0) {
                    document.write(c+"<br />");
                }else{
                    document.write(c+" ");
                }
            }

【函数的声明及调用】
1、函数的声明格式:
function 函数名(参数1,参数2,...){
//函数体代码
return 返回值;
}
函数的调用
① 直接调用:函数名(参数1的值,参数2的值,....);
② 事件调用方式:直接在HTML标签中,使用事件名="函数()"
<button onmouseout="SaySth(‘你好啊‘,‘red‘)">点击按钮,打印内容</button>
2、函数的注意事项
① 函数名必须要符合小驼峰法则,首字母小写之后每个单词首字母大写 ;
② 函数名后面的括号中可以有参数,也可以没有参数,分别称为有参函数和无参函数;
③ 声明函数时的参数列表称为形参列表,形式参数。(变量的名字);
function saySth(str,color){}
调用函数时的参数列表,称为实参列表,实际参数。(变量的赋值);
saySth("你好","red");
④ 函数的形参列表个数与实参列表个数没有实际关联关系。
函数参数的个数,取决于实参列表
如果实参列表的个数<形参列表,则未赋值的形参,将为Undefind。
⑤ 函数可以有返回值,使用return返回结果,调用函数时,可以使用一个变量接收函数的返回结果。
如果函数没有返回值,则接收的结果为Undefined;
function func(){
return="haha";
}
var num=func();//num="haha";
⑥ 函数中变量的作用域
在函数中,使用var 声明的变量,为局部变量。只能在函数内部访问;
不用var声明的变量,为全局变量,在函数外部也能访问;
函数的形参列表,默认为函数的局部变量,只能在函数内部使用。
⑦ 函数的声明与函数的调用没有先后之分,即可以在声明函数前调用函数
func();//声明func之前调用也是可以的
function func(){}

[匿名函数的使用]
 1、声明一个匿名函数,直接赋值给某一个事件。
 window.onload=function(){} 文档就绪函数
 2、匿名函数表达式。将匿名函数,赋值给一个变量。
 声明:var func=function(){}
 调用:func();
 注意:使用匿名函数表达式时,函数的调用语句,必须放在函数声明语句之后(与普通函数的区别)。
 3、自执行函数:
 ① !function(){}();//可以使用多种运算符开头但一般用感叹号。
 !function(形参列表){}(实参列表);
 ② (function(){}());//使用()将函数及函数后的括号包裹
 ③ (function(){})();使用()只包裹函数部分;
 三种写法的特点:
 ① 使用!开头,结构清晰,不容易混乱,推荐使用。
 ② 能够表明匿名函数与调用的()为一个整体,官方推荐使用。
 ③ 无法表明括号与之后的()的整体性,不推荐使用;

//单行注释
/*多行注释,开头一个* */
/**

[JS代码的执行顺序问题]
JS代码在运行时,会分为两大部分。检查装载和执行阶段
检查装载阶段:会先检测代码的语法错误,进行变量、函数的声明
执行阶段:变量的赋值、函数的调用等,都属于执行阶段
以下面代码为例:
console.log(num);//undefined
var num=10;

func1();//函数可以正常执行
function func1(){}

func2();//函数不能执行,打印func2时,显示undefined
var func2=function(){}
上述代码的执行顺序为
------检查装载阶段-------
var num;
function func1(){}
var func2;
------代码执行阶段-------
console.log(num); num=10;
func1();
func2(); func2=function(){}

[函数的内部属性]
1、arguments对象
① 作用:用于储存调用函数时的所有实参。当我们调用函数,并用实参赋值时,实际上参数列表已经
保存到arguments数组中,可以在函数中,使用arguments[n]的形式调用。n从0开始。
② arguments数组的个数,取决于实参列表,与形参无关。
但是,一旦第N个位置的形参、实参、arguments都存在时,形参将与arguments绑定,同步变化。(即在
函数中修改形参的值,arguments也会改变,反之,亦成立)
③ arguments.callee 是arguents的重要属性,表示arguments所在函数的引用地址,在函数里面可以
使用arguments.callee调用函数本身
在函数内部,调用函数自身的写法,叫做递归。
递归分为两部分:递和归。以递归调用语句为界限,可以将函数分为上下两部分。

递:是当函数执行上半部分,遇到自身的调用语句时,继续进入内层函数,再执行上半部分。
直到执行完最内层函数。
归:当最内层函数执行完以后,再从最内层函数开始,逐渐执行函数的下半部分。

当最外层函数执行时,遇到自身的调用语句,会进入内层函数执行,而外层函数的后半部分暂不执行。直到
最内层函数执行完以后,再逐步向外执行。

使用递归计算1-10的和

var sum=0;
        var i=1;
            function sum1() {
                sum += i;
                i++;
                if (i<=10) {
                    sum1();
                }
                return sum;
            }
            sum1();
            alert(sum);
时间: 2024-10-03 05:03:40

HTML-JS 循环 函数 递归的相关文章

js循环动态绑定带参数函数遇到的问题及解决方案[转]

今天写原生javascript时,想利用绑定事件实现类似jquery中on方法的功能:于是有了for循环里绑定事件,无意中发现定义类能解决好多问题! 例如:一个不确定长度的列表,在鼠标经过某一条的时候改变背景 1 2 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

逆战班!js基础关于函数递归

函数递归的特点: 1,函数自己调用自己 2,一般会有return 3,一般会有参数 注意: ****递归能做循环能做的一切,还能解决循环不容易解决的事 ****有时候会搞不懂递归是如何正确的实现功能的(因为有套路) 在一般的公司里面,明文禁止使用递归,但是懂得递归又是一个程序员必备的知识!!!! 至于为什么公司不允许使用递归,原因如下: 案例:计算1~100的和 使用普通循环语句: <script> function add(a) { var sum=0 for(var i = 1;i <

js匿名函数闭包

函数声明: function functionName(arg0,arg1){ //函数体 } 函数表达式: var functionName = function(arg0,arg1){ //函数体 } 函数声明和函数表达式之间的主要区别是前者会在代码执行前被加载到作用域中,而后者是在代码执行到那一行的时候才会有定义.另一个区别是函数声明会给函数指定一个名字,而函数表达式则创建一个匿名函数,然后将这个函数赋给一个变量 1 递归 递归函数是在一个函数通过名字调用自身的情况下构成的,例如: fun

Python中的函数递归思想,以及对比迭代和递归解决Fibonacci数列

什么是递归?简单的说就是:函数自身调用自身. "普通程序员用迭代,天才程序员用递归" 虽然递归 在运行时会不断出栈压栈,调用底层的寄存器,造成空间上的占用以及时间上的缓慢, 但在一些算法上面仍然是递归很实用 但需要注意的是: #递归是自己调用自己 很消耗时间,还会有消耗空间的危险,所以递归递归一定要知道"归去来兮" #所谓"归去来兮"就是指递归的两个原则: #1.调用了函数自身 #2.设置了自身正确的返回值 (必须有一个正确的返回停止条件,不能无

循环 函数 软件包 【中】

循环 函数 软件包  [中] 创建无限循环 while true; do 循环体 done until false; do 循环体 Done 特殊用法 while循环的特殊用法(遍历文件的每一行): while read line; do 循环体 done < /PATH/FROM/SOMEFILE 依次读取/PATH/FROM/SOMEFILE文件中的每一行,且将 行赋值给变量line 示例 [[email protected] bin]# bash wenben.sh #! # read -

Atitit &#160;循环(loop), 递归(recursion), 遍历(traversal), 迭代(iterate).

Atitit  循环(loop), 递归(recursion), 遍历(traversal), 迭代(iterate). 1.1. 循环算是最基础的概念, 凡是重复执行一段代码, 都可以称之为循环. 大部分的递归, 遍历, 迭代, 都是循环.1 1.2. 递归的定义是, 根据一种(几种)基本情况定义的算法, 其他复杂情况都可以被逐步还原为基本情况.1 1.3. 递归的基本概念和特点1 1.4. 迭代(数学): 在循环的基础上, 每一次循环, 都比上一次更为接近结果.2 1.5. 编程语言中的循环

工作日志之-函数递归

今天在对各栏目的数据记录进行统计,并展示出来. 遇到的主要问题是:用于读取总记录数并展示的函数,每个栏目都要调用显示,刚开始,用for循环调用,但函数出错. 解决:采用递归循环函数 代码如下: jQuery(function($) { dataNum(types,0);//调用函数,传数栏目数组及递归记录 }); function dataNum(types,temp){ var fullurl=getOption("gykj_host")+types[temp]+"/pag

算法学习之循环和递归

[摘要] 大家都知道递归的实现是通过调用函数本身,函数调用的时候,每次调用时要做地址保存,参数传递等,这是通过一个递归工作栈实现的.原理上讲,所有递归都是可以消除的,代价就是可能自己要维护一个栈.而且我个人认为,很多情况下用递归还是必要的,它往往能把复杂问题分解成更为简单的步骤,而且很能反映问题的本质.循环和递归其实存在一定的联系.  1)求和递归函数 我们可以举一个循环的例子,前面我们说过,如果编写一个1到n的求和函数怎么写呢,你可能会这么写: int calculate(int m) { i

一步一步写算法(之循环和递归)

原文:一步一步写算法(之循环和递归) [ 声明:版权所有,欢迎转载,请勿用于商业用途.  联系信箱:feixiaoxing @163.com] 其实编程的朋友知道,不管学什么语言,循环和递归是两个必须学习的内容.当然,如果循环还好理解一点,那么递归却没有那么简单.我们曾经对递归讳莫如深,但是我想告诉大家的是,递归其实没有那么可怕.所谓的递归就是函数自己调用自己而已,循环本质上也是一种递归.  1)求和递归函数 我们可以举一个循环的例子,前面我们说过,如果编写一个1到n的求和函数怎么写呢,你可能会