递归调用
递归:在一个函数的内部再一次调用自己
问题:
12345 54321 求5!(54321) 4!(4321) 3!(321)
2!(21) 1!(1*1)5!=54! 4!=43! 3!=32! 2!=21! 1!=1 通过一个函数,求数字n的阶乘
10!=10*(10-1)! 效率:
在本次调用还未结束时,就开始下次的调用,本次调用就会被挂起,
直到所有的调用都完成之后,才会依次返回,调用的次数越多,效率越低。
分支结构
if结构
if(条件){ 语句块; } 注意: 条件尽量是boolean的,如果不是boolean,以下情况会当做false处理
if(0){…} if(0.0){…} if(""){…} if(undefined){…}
if(null){…} if(NaN){…} 注意:if后的{}可以省略,但是不推荐,只控制if后的第一句话。
if…else…结构
语法:
if(条件){
语句块
}else{
语句块
}
if…else if…else…
语法:
if(条件1){
语句块1
}else if(条件2){
语句块2
}else if(条件3){
语句块3
}else{
语句块n
}
switch…case
1.作用:(使用场合)
等值判断
2.语法
1.switch(值/表达式){
case 值1:
语句块1;
break;//结束switch结构,可选的
case 值2:
语句块2;
break;
…
default:
语句块n;
break;
}
2.特殊用法
执行相同操作时:
switch(值/表达式){
case 值1:
case 值2:
case 值3:
语句块;
}
循环结构
特点
1.循环条件:循环的开始和结束
2.循环操作:要执行的相同或相似的语句
循环-while
语法: while(条件){
//循环体-循环操作
//更新循环条件 }
循环的流程控制
1.break
作用:终止整个循环的运行
2.continue
作用:终止本次循环的运行,继续执行下一次循环
ex:
循环从弹出框中录入信息,并且打印,直到输入exit为止。
循环-do…while
1.语法 do{
//循环体 }while(条件);执行流程:
1.先执行循环体
2.再判断循环条件 如果条件为真,则继续执行循环体 如果条件为假,则跳出循环操作
循环-for
语法: for(表达式1;表达式2;表达式3){
//循环操作 } 表达式1:循环条件的声明 表达式2:循环条件的判断 表达式3:更新循环变量 执行流程:
1.先执行表达式1
2.判断表达式2的结果(boolean类型)
3.如果2条件为真,则执行循环体,否则退出
4.执行完循环体后,再执行表达式3
5.判断表达式2的结果 ex: for(var i=1;i<=10;i++){
console.log(i); }
for的特殊用法
for(表达式1;表达式2;表达式3;){}
1.省略表达式
三个表达式可以任意省略,分号不能省
但一定在循环的内部或外部将表达式补充完整
2.表达式1和表达式3 允许写多个表达式,用逗号隔开表达式
循环嵌套
循环嵌套
在一个循环的内部,又出现一个循环
for(var i=1;i<100;i++){ //外层循环
for(var j=1;j<=10;j++){
//内层循环
}
}
外层循环走一次,内层循环走一轮
数组
什么是数组
在一个变量中保存多个数据。
数组是按照线型顺序来排列的-线型结构
数组中:除了第一个元素外,每个元素都有一个直接的"前驱元素"。
数组中:除了最后一个元素外,每个元素都有一个会直接的"后继元素"。
声明数组
1.语法
1.var 数组名=[];
var names=[];
2.var 数组名=[元素1,元素2,元素3…];
var names=[“孙悟空”,“猪八戒”,“沙和尚”];
3.var 数组名=new Array();
var names=new Array();
4.var 数组名=new Array(元素1,元素2…);
var names=new Array(“林黛玉”,“贾宝玉”,“王熙凤”);
数组的使用
1.取值和赋值操作 取值: 数组名[下标] var newArr=[“tom”,“lilei”]; newArr[0] 赋值:
数组名[下标]=值;
newArr[2]=“韩梅梅”;
2.获取数组的长度 数组长度:数组中元素的个数 属性:length 语法:数组名.length
3.配合循环,遍历数组中的每个元素 for(var i=0;i<names.length;i++){
i:表示数组中每个元素的下标
names[i]:每个元素 }
length表示数组中即将要插入的元素的下标 var names=[“tom”,“lili”,“lucy”];
names[names.length]=“lilei”;