进制转换器、平衡圆括号问题、海诺塔
参考文章:
https://www.cnblogs.com/xiaohuochai/p/8174742.html#anchor5
http://shlpro.site/2017/03/28/《学习JavaScript数据结构与算法》读书笔记--栈/#disqus_thread
1.进制转换器
原理: 将十进制数与要转换的进制基数相除,直至商为0,将余数从后向前排列即得到转换后的进制数
Math.floor() 方法执行的是向下取整计算,它返回的是小于或等于函数参数,并且与之最接近的整数。可以理解为让除法的操作仅返回整数部分。
// base: 基数; decNumber: 十进制数; rem: 余数
var baseConverter = function(decNumber,base){
var remStack = new Stack(),
rem, //余数
baseString = '', //最后的*进制数
//讲数字转换为对应字母(十六进制是ABCDEF对应10 11 12 13 14 15)
digits = '0123456789ABCDEF';
while(decNumber>0){
//Math.floor(11.46)=Math.floor(11.68)=Math.floor(11.5)=11
//Math.floor(-11.46)=Math.floor(-11.68)=Math.floor(-11.5)=-12
rem = Math.floor(decNumber%base);
remStack.push(rem);
decNumber = Math.floor(decNumber/base);
}
while(!remStack.isEmpyy()){
baseString += digits[remStack.pop()];
}
return baseString;
}
2.平衡圆括