1. 程式人生 > >基本js一些出過錯的案例

基本js一些出過錯的案例

1.任意輸入一個正整數,判斷這個數的位數?

var num = parseInt(prompt("請輸入一個數"));

                var sum = 0;

                while (num>0){

                    sum =sum+1;

                    num = parseInt(num/10);

                }

                alert(sum);

2.編寫函式,功能是將三個數按照從小到大順序輸出

function pai(a,b,c){

             var temp;

             if(a>b){

                 temp=a;

                 a=b;

                 b=temp;

             }

             if(a>c){

                 temp=a;

                 a=c;

                 c=temp;

             }

             if(b>c){

                 temp=b;

                 b=c;

                c=temp;

             }

             console.log(a,b,c);

         }

         pai(6,7,4);

 

.3輸出:100可以拆成哪兩個素數的和

    function isPrimeNumber(num){

        //是素數返回true,否則返回false

        for (var i = 2; i < num; i++) {

            if(num%i == 0){

                return false;

            }

        }

        return true;

function box(){

        for (var i = 1; i < 50; i++) {

            if(isPrimeNumber(i)){//呼叫判斷是否是素數的函式

                //console.log(i);

                var s2 = 100-i;

                if(isPrimeNumber(s2)){

                    console.log(s2,i);

                }

            }

        }

    }

    box();

 

4.函式實現:輸出1—3之間能組成的奇數個數,並輸出這些數

  要求 : 組成的數是一個兩位數,個位數!=十位數

  組成: 13  21   23  31  共4個

  1 2 3

  1 2 3

function box(){

        for (var i = 1; i <= 3; i++) {

            for (var j = 1; j <= 3; j++) {

                if(i!=j){

                    var str = ""+i+j;

                    //console.log(str);

                    if(str%2 == 1){

                        console.log(str);

                    }

                }

            }

        }

    }

    box();

.函式的遞迴呼叫案例

     1.用函式實現一個數的迴圈,輸出100到1;

function box(a){

        if(a==0){

            return;

        }

        console.log(a);

        a--;

        box(a);

    }

    box(100)

2.普通函式實現帶返回值的從1-100累加的和;

     function box(a){

          if(a==0){

              return 0;

          }

          return a+box(a-1);

     }

     alert(box(100));

     3.遞迴實現1--100以內所有偶數的和

     function box(a){

          if(a==0){

              return 0;

          }

          if(a%2==0){

              return a+box(a-2);

          }

     }

     alert(box(100));

      4.遞迴實現一個數的階乘

     function box(a){

          if(a==1){

              return 1;

          }

          return a*box(a-1);

     }

     alert(box(5));

5.遞迴實現斐波那契數列的第n項

//  1 1 2 3 5 8 13 21 34....

// 第一項是0  第二項是1    後面每一項是前面兩項的和

F(0)=1,F(1)=1, F(n)=F(n-1)+F(n-2)(n>=2,n∈N*)

function box(a){

          if(a==1){

              return 1;

          }

          if(a==2){

              return 1;

          }

          if(a>2){

              return box(a-1)+box(a-2);

          }

     }

     alert(box(4));

1,如果一個數恰好等於它的真因數之和(就是不包括本身),則稱該數為“完全數” perfect number。請列出2~10000的所有完全數

   第一種:function num(){

     for(var i=2;i<=10000;i++){

          var sum=0;

          for(var j=1;j<i;j++){

               if(i%j==0){

                    sum=sum+j;

               }

          }

          if(sum==i){

               console.log(i);

          }

     }

    }

    num();

第二種:

//1.求一個數的所有真因數的和

    

    /*function isPerfectNumAdd(num){

        var sum = 0;

        for (var i = 1; i < num; i++) {

            if(num%i == 0){

                sum += i;

            }

        }

        return sum;

    }*/

    //2.通過一個數的所有真因數的和來與當前這個數對比,如果相等說明這個數是一個完全數。

    //alert(isPerfectNumAdd(7));

    /*function getPerfectNum(){

        for (var i = 2; i <= 10000; i++) {

            if(isPerfectNumAdd(i) == i){

                console.log(i)

            }

        }

    }

    getPerfectNum();

 

第三種:函式遞迴呼叫

function getPerfectNum(num){

        if(num==10001){

            return;

        }

        var sum = 0;

        for (var i = 1; i < num; i++) {

            if(num%i == 0){

                sum += i;

            }

        }

        if(sum == num){

            console.log(num);

        }

        return getPerfectNum(num+1);

    }

    getPerfectNum(2);

 3,編寫一個函式 :實現計算任意一個數的各個位數的和

 

    //例如 :  234  位數和為  9

var num=parseInt(prompt("請輸入一個數"));

function fnSum(num){

        var sum = 0;

        while( num >0 ){

            sum += num % 10; //取出個位數

            num = parseInt( num/10 );

        }

        return sum;

    }

    var s = fnSum();

    alert(s);