zoukankan      html  css  js  c++  java
  • 用栈实现一个十进制转二进制

    第一步 通过js 实现一个栈

    //  封装栈
    function Stack() {
    
      //  栈的属性
      this.items = []
    
      //  栈的相关操作
      //  1. 压栈
      Stack.prototype.push  = function(ele) {
        this.items.push(ele)
      }
    
      //  2. 从栈中取出元素
      Stack.prototype.pop  = function() {
        return this.items.pop()
      }
    
      //  3. 查看栈顶元素
      Stack.prototype.peek = function() {
        return this.items[this.items.length  - 1]
      }
    
      //  4. 判断栈是否为空
      Stack.prototype.isEmpty = function() {
        return this.items.length === 0
      }
    
      //  5. 或者栈中元素的数量
      Stack.prototype.length = function() {
        return this.items.length
      }
      
      //  6. toString方法
      Stack.prototype.toString = function() {
        // return this.items.toString()
        var resString = ''
        this.items.forEach( i => {
          resString += i + ' '
        } )
        return resString
      }
     
    }
    

    第二步 通过栈的形式 实现十进制转二进制

    
    // 函数: 将十进制转二进制
    function dec2bin(decNumber) {
    
      // 不是数字返回 Err
      if(isNaN(decNumber)) throw('decNumber must a number' )
    
      if(decNumber === 0) return '0'
    
      // 取绝对值, 用来处理负数
      var absDecNumber = Math.abs(decNumber)
    
      // 1. 定义栈对象
      var stack = new Stack()
    
      // 2.循环操作
      while(absDecNumber > 0) {
        // 2.1 获取余数 压入栈中
        stack.push(absDecNumber % 2)
    
        // 2.2 获取整除后的余数结果,作为下一次允许的数字
        absDecNumber = Math.floor(absDecNumber / 2)
    
      }
    
      // 3. 从栈中取出 0 和 1
      var  binaryString = decNumber < 0 ? '-' : ''
      while(!stack.isEmpty()) {
        binaryString += stack.pop()
      }
    
      return binaryString
    }
    
    
  • 相关阅读:
    Matplotlib介绍
    过拟合与欠拟合
    EM最大期望算法
    深度学习之卷积神经网络CNN及tensorflow代码实例
    朴素贝叶斯及贝叶斯网络简介
    迁移学习简介
    Tensorflow 之物体检测
    tensorflow object detection API
    ubuntu17.04中启动Tensorboard过程
    deep learning 经典网络模型之Alexnet、VGG、Googlenet、Resnet
  • 原文地址:https://www.cnblogs.com/vant850/p/11621954.html
Copyright © 2011-2022 走看看