js模拟栈---进制转化。十进制转二进制

var Stack = (function(){
		var items = new WeakMap();
		//先入后出,后入先出
		class Stack{
			constructor(){
				items.set(this,[]);
			}
			push(ele){
				//入栈
				var ls = items.get(this);
				ls.push(ele);
			}
			pop(){
				//出栈
				var ls = items.get(this);
				return ls.pop();
			}
			size(){
				//获取栈的长度
				var ls = items.get(this);
				return ls.length;
			}
			print(){
				//打印栈
				var ls = items.get(this);
				return ls.toString();
			}
		}
		return Stack;
	})();

	
	function devide(num){
		if(typeof num != "number" || num < 0){
			throw new Error("参数必须要数字且大于0");
		}
		num = Math.floor(num);
		var stack = new Stack();
		var res = '';
		var rem;
		while(num > 0){
			rem = num % 2;
			stack.push(rem);
			num = Math.floor(num/2);
		}
		
		while(stack.size() > 0){
			res += stack.pop().toString();
		}
		
		return res;
	}
  	console.log(devide(5))

  

猜你喜欢

转载自www.cnblogs.com/muamaker/p/9181577.html