for循环阶乘计算
源码下载本节课主要讲解如何使用for循环结构来完成阶乘运算。
9 // 求解10的阶乘 10 var S = 1; 11 for(var i = 1;i<11;i++){ 12 S *= i; 13 } 14 document.write(S);
体验测试
更改第11行代码的数值11,尝试输入一个较小的数,查看阶乘计算的结果变化。
代码解析
- 自增运算符++,i++;语句每执行一次,变量1增加1.
- 运算符*=, S *= i;语句表示变量S与变量i相乘,然后把成绩赋值给S
- 比较运算符<, i<11;语句用于判断变量i是否小于11
- 上一节课谈到过,变量是可以改变的,变量的变化就是内存寄存器的状态变化,内存的变化就像你反复擦鞋U盘更改内容
- for循环结构
- 局部变量与全局变量概念
代码中关键字for构建的循环结构,主要完成的功能就是,首先定义一个变量i,初始值是1,然后判断变量i是否小于11,如果小于11,大括号里面的语句S *= i; 然后执行i++自增运算,继续判断i此时是否仍然小于11,如果小于,重复执行大括号里面的语句S *= i;,如此循环,S不停的发生变化,一直到变量i增加到不在小于11,结束循环程序, 进入下一步,开始执行第14行代码。
for循环流程图如下
上面代码中,变量S在循环结构for的外面你可以理解为全局变量,变量i可以理解为局部变量。局部变量和全局变量的提出主要是为了编程的方便,比如两个for循环结构中都有变量i,他们之间不会混淆 如果有两个全局变量S,那么后一个就会覆盖前一个,会带来很多问题,局部变量可以保证,你写程序的时候,一个函数里面的变量名字不会污染其它函数里的同名变量,局部变量就是只在局部起作用。全局变量, 你暂时可以简单理解为函数外面的变量,可以作用到函数里面。上面代码中阶乘的结果变量必须在for循环结构外面声明,然后for循环里面的代码不停地执行运算S *= i;改变变量S的值。
C、C++、python、Javascript等高级语言都有for关键字,在汇编语言中没有for关键字,通过loop和跳转指令实现,具体是什么不用关心,for循环程序结束其实是CPU程序寄存器指向了新的程序位置,反复执行循环体中的代码, 其实就是程序寄存器重复指向循环体代码。从硬件和汇编语法抽象出来循环程序,主要就是为了解放编程,重复的工作尽可能交给编译器。脚本语言Javascript相比编译语言C也是如此,比如Javascript不需要声明数据类型,这样可以降低 编程入门门槛,但是复杂的工程还是取决于计算机基础。
关键字
- for:构建for循环结构程序
语法
- 大括号里面是循环体
- for关键后面紧跟小括号,声明控制变量,控制变量比较运算,控制变量增减的语句都写在括号里面,既然是语句,语句结尾要使用分号,最后一刻语句可以不写分号