使用递归对十进制数进行进制转换

写个小函数,以递归的方式对十进制进行进制转换,使用了立即调用和闭包~~
(function (){
    var numArr=[]//暂时存放在数组中
    /*
    num:想要转换的10进制数
    want:想转换为want进制(目前不能超过10...)
    return:转换后的结果
    */
    function convert(num,want,firstTime=true){

        if(!num){
            console.log('why no num?')
            return false
        }
        if(!want){
            console.log('why no want?')
            return false
        }

        if(firstTime){
            numArr=[]
        }
        
    if(parseInt(num/want)!==0){//商不为0,则继续
        numArr.push(num%want) //取模
        return convert(parseInt(num/want),want,false) //把商再除以进制数
    }else{
        numArr.push(num) //商为0,说明小于进制数了,直接拿来用
        return parseInt(numArr.reverse().join(""))
    }
    
}
window.convert=convert
return convert
})()
convert(66,2)

 

posted @ 2017-11-18 23:10  toDoYourBest  阅读(669)  评论(0编辑  收藏  举报