分成两组实验进行对比
这就是第一种:num=i*i(+1);
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>50!</title>
</head>
<body>
</body>
<!--还是在body下面写javascript代码-->
<script type="text/javascript">
//定义一个变量
//为了写for循环,所以定义一个循环控制变量i;
var num = 0;
var i = 1;
//循环条件是 i 的值为1,每次判断 i 小于等于50时,就执行代码块,同时i自增1;
for(i=1;i<=50;i++){
//循环内容是 将i于i加1的乘积赋值给num;
num=i*(i+1);
}
/*
我先记录一下,第一次运行的时候 i = 1 符合 <= (小于等于五十)的循环条件
那么开始循环:i+1等于2 与 i本身(1)相乘,等于2;然后将其值赋给num,此时 num = 2;
第二次运行的时候 i = 2 符合 小于等于五十的循环条件
那么开始循环;i+1=3 与i本身(2)相称,等于6;然后赋值给num,此时num = 6;
第三次依然符合循环条件(小于五十)
这个时候 i已经变成了3 那么就是与4相称 得出的6赋给num ;所以num = 12;
当然这个时候 我们已经显而易见的就是 这个推导式是错误的
因为4的阶乘等于4*3*2*1
也就是说 num此时应该等于24;不应该等于12;
为了证实我刚才的理论
我进行下一步论证
那么第四次的时候 显而易见 就是 5与4相称
得到的无非是20
第五次呢?
就是六与五相乘= 30;
诸如此类 循环到了50的时候 (仍然符合循环条件,所以执行),反而成了51乘50;
50!(五十的阶乘能等于2550吗?)
不可能
所以 我把上面的东西注释掉 重新开始写;
*/
console.log(num);
</script>
</html>
那么这是第二次的:num *= i;
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>50!阶乘</title>
</head>
<body>
</body>
<script type="text/javascript">
/*那么呢 我现在要开始写一个50的阶乘,我用的是别人的代码,但是我一步一步开始分析,一步一步开始练习
一遍一遍开始学习。
首先要在 body标签下面新建Script标签;在这个标签内进行变量的初始化和函数的定义。
*/
//也就是使用var定义循环变量和一个存储值的num变量
var i = 1;
var num = 1;
//这个时候我写一个for循环
for(i=1;i<=50;i++){
//到这里我想i应该是作为被乘数存在的
num*=i;//num = num * i;
}
//在调试界面输出num的值(最终结果)\n
console.log(num);
/*那么现在开始分析
第一次运行(执行循环)的时候 i 等于 1 符合循环条件 (小于等于五十) 并且在结束这次循环之后,i+1变成2
这个时候的num也是1 所以这次的运行内容就是 1*1 最后赋值给num = 1 (注意num这个时候是全局变量)
第二次执行循环的时候,如上所述 i 变成了 2。 那么它是符合小于等于五十的条件的,所以继续执行函数体,
值得一提的是,i的步长值为1,也就是在函数执行完成后(进行再一次判断前),i就会由2变成3(然后以这一个值进行接下来的条件判断和参与运算);
这个时候 我们清晰的记得 num 的值 等于1, 根据函数体表达式,num(1)要与作为乘数的i(2)进行乘法运算;
我们都知道 1*2 = 2 ,再赋值给 num; num 变成 了 2;(再次强调 num是一个全局变量,为什么我一次次强调,因为局部变量常常会每次进行初始化;)
所以就开始了第三次运算,这个时候i就是3,num 是2;
这次运算的时候3*2,num变成了6,执行过后 i+1 = 4;
4就可以参与下一次的运算和循环判断,就是4和6相乘,num变成了24;
i (4>5) i*num(24)
num=5*24=120;
i(5>6) i*num(120)= 720;
num = 720;
i(6>7) i*num(720)=5040;
num = 5040;
i(7>8) i*num(5040)=43200;
num = 43200;
i(8>9) i*num(43200) = 388800;
num = 388800;
i(9>10) i*num(388800) = 3888000;
num = 3888000;
后面我不算了,累了,我还以为自己在口算呢,
*/
</script>
</html>