1.篮球从5米高的地方掉下来,每次弹起的高度是原来的30%,经过几次弹起,篮球的高度小于0.1米。

 var height = 5;
     for(a = 1;;a++){
         height=height*0.3;
         if(height<=0.1){
             console.log('经过'+a+'次弹起');
             break;
         }
     }

2.有一个棋盘,有64个方格,在第一个方格里面放1粒芝麻重量是0.00001kg,第二个里面放2粒,第三个里面放4,棋盘上放的所有芝麻的重量

要找到每个方格上面的规律:每个方格里面的芝麻量是2的(i-1)次幂

刚开始时,我犯了一个错误。每个格子上有多少芝麻数,我用了for循环。其实不对,因为j++是加一递增,而每一个格子里的j是2倍递增的。

 var sum = 1;
    for(i = 1;i < 65;i++){
        for(j = 1;j <= i;j++){
            sum += Math.pow(2,i-1);
        }
     }
     console.log(sum*0.00001+'kg');

后面我改成了

var sum = 1;
    for(i = 1;i < 65;i++){
        num = Math.pow(2, i);
        sum += num;
        }   
     console.log(sum*0.00001+'kg');

3. 完成一个梯形打印功能

只要改变循环变量的初始值

 for(i = 3; i<7;i++){
         for(j = 0;j<i;j++){
         document.write('* ');       
        }
        document.write('<br/>');
     }

    for(i = 100;i <= 200;i++){
        if(i%3==0 || i%7==0)
        console.log(i);
    }

4.打印100–200之间所有能被3或者7整除的数

for(i = 100;i <= 200;i++){
        if(i%3==0 || i%7==0)
        console.log(i);
    }

5. 求1+2!+3!+...+20!的值

不能把sum定义在for外面。因为这样做的话,sum就会一直在乘i,没有清零

    var sum = 1;
    var count = 0;
    for(i = 1;i<=20;i++){
        for(j = 1;j<=i;j++){
            sum*=j;
        }
        count+=sum;
    }
    console.log(count);

把sum和count定义在for外面,运行的结果如下

1.274420312381611e+156

之后把sum和count定义在for里面

    for(var i=1,count=0;i<=20;i++){
        for(var j=1,sum=1;j<=i;j++){
            sum*=j;
        }
        count+=sum;
    }
    console.log('1+2!+3!+...+20!的值'+count);

运行出结果:

2561327494111820300

6. 输出100-200之间所有的质数

难点在于:判断质数的条件要怎么写?

思路:如果是质数,它的循环次数是不是就是最大值

第一种方法

 for(var i = 100; i <= 200; i++) {
     for(var j = 2; j < i - 1; j++) {
        if(i % j == 0){
            // 证明此时的i一定不是一个质数
            break;
        }
     }
     if(j == i - 1) {
        //  证明循环完毕, 都没有进入到if语句中
         console.log(i);
     }
 }

举个例子做类比

 for(var i = 0; i < 10; i++) {
    
 }
 console.log(i); // 10

第二种方法

for(var i = 100; i <= 200; i++) {
    var flag = true; // 上锁
    for(var j = 2; j < i - 1; j++) {
       if(i % j == 0){
           // 证明此时的i一定不是一个质数
           flag = false;
           break;
       }
    }
    if(flag) {
       //  证明循环完毕, 都没有进入到if语句中
        console.log(i);
    }
}

7. 九九乘法表

我第一次运行出来的结果没有第一行,后来发现是j的范围那里没有=

for(i = 1;i<=9;i++){
        for(j = 1;j<=i;j++){
            document.write(i+'*'+j+'='+i*j);
            document.write('    '); 
        }
        document.write('<br />');
    }

8. 求100-999之间的水仙花数。abc = a * a * a + b * b * b + c * c *c;

要事先想出3位数的个、十、百要怎样提取出来

for(i=100;i<=999;i++){
        if(i==Math.pow(parseInt(i/100),3) + Math.pow(parseInt(i/10)%10,3) + Math.pow(parseInt(i%10),3)){
            console.log(i);
        }
    }

后面还可以改进

for(var i = 100; i < 1000; i++) {
    var g = i % 10;
    var s = Math.floor(i / 10) % 10;
    var b = Math.floor(i / 100) % 10;
    if(i == Math.pow(g, 3) + Math.pow(s, 3) + Math.pow(b, 3) ) {
        console.log(i);
    }    
}
posted on 2019-01-23 20:00  风往南  阅读(621)  评论(1编辑  收藏  举报