常规的实现方式
from pythonds.basic.stack import Stack
def baseConverter(decNumber, base):
digits = "0123456789ABCDEF"
remstack = Stack()
while decNumber > 0:
rem = decNumber % base
remstack.push(rem)
decNumber = decNumber // base
newString = ""
while not remstack.isEmpty():
newString = newString + digits[remstack.pop()]
return newString
decNumber = 21
print(decNumber, "转换二进制为:", baseConverter(decNumber, 2))
print(decNumber, "转换16进制为:", baseConverter(decNumber, 16))
利用递归的实现
def tostr(n, base):
convertstr = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ"
if n < base:
return convertstr[n]
else:
# 此处的递归式子刚好满足了倒序的要求
return tostr(n // base, base) + convertstr[n % base]
print(tostr(1456, 16))
效果
利用栈的先进后出特性