1、定义一个栈的类
class Stack{ constructor(){ this.items=[] } // 从栈顶添加元素 push(ele){ this.items.push(ele) } // 从栈移除元素 pop(){ return this.items.pop() } // 查看栈顶元素 peek(){ return this.items[this.items.length-1] } // 检查栈是否为空 isEmpty(){ return this.items.length === 0 } // 清空栈元素 clear(){ this.items = [] } }
2、十进制转二进制的算法
以58为例:
58 / 2 = 29 余 0 ; 0进栈
29 / 2 = 14 余 1 ; 1进栈
14 / 2 = 7 余 0; 0 进栈
7 / 2 = 3 余 1; 1 进栈
3 / 2 = 1 余 1; 1进栈
1 / 2 = 0 余 1 ; 1进栈
所以结果为 111010
function decimaToBinary(decNumber){ const remSatck = new Stack() let number = decNumber; let rem; let binaryString = ''; // console.log(number) while (number > 0){ console.log(number) rem = Math.floor(number % 2); remSatck.push(rem) number = Math.floor(number / 2); } while (!remSatck.isEmpty()){ binaryString+=remSatck.pop().toString() } return binaryString }