js常見題

1,求數組最大值

var list=[1,2,3,4,5,6];
    //方法一
    function getMax(arr){
        return Math.max.apply(Math,arr)
    }
   // console.log(getMax(list));

    //方法二
    function getMax2(arr){
        var max=arr[0];
        for(var i=1;i<arr.length;i++){
            if(arr[i]>max){
                max=arr[i];
            }
        }
        return max;
    }
    //console.log(getMax2(list));

    //方法三:
    Array.prototype.max=function(){
        return Math.max.apply({},this)
    };
    //console.log(list.max())

2,求和 0.1+0.2=0.3

 /*
   * 小數求和
   * 0.1 + 0.2 = 0.3
   * */
    function add(a,b){
        if(a&&b){
            var r1=a.toString().split('.')[1].length;//看小數點後有幾位
            var r2=b.toString().split('.')[1].length;
            var m=Math.pow(10,Math.max(r1,r2));//根據小數點後位數來決定乘的倍數,1位是10的一次冪,2位是10的兩次冪
            return (a*m+b*m)/m;
        }
    }
    console.log(add(0.1,0.2));

3,斐波那契數列

//1,找規律
    //2,找出口
    //fb(n) = fb(n-1)+fb(n-2);
    function fb(n){
        if( n === 1 || n === 2){
            return 1
        }
        return fb(n - 1) + fb(n - 2);
    }

4,階乘

//注意兩點:
    //1,找規律
    //2,找出口,不然會形成死循環
    function mul(n){
        if(n===1){
            return 1
        }
        return n * mul(n-1)
    }

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章