把整数转换成十进制过程

十进制有是个不同的符号:

conv_string="0123456789"

计算过程

  1. 比十小的整数,转换成十进制,直接查找conv_string:conv_string[n]

  2. 比十大的整数,拆成一系列比十小的整数,逐个查表,如769,拆成7,6,9查表可以得到769。

递归写法

  1. 套用递归订定律,找到递归的“基本结束条件”:小于十的整数

  2. 使用整数除和求余数两个计算将整数一步步拆开。

除以“进制基base” (// base)

对“进制基”求余数 (% base)

问题分解:

798

798 → 798//10 + '8'
79  → 79 //10 + '9'
7   → 7 <10   →‘7’

代码:

def toStr(n,base):

    convert_string='0123456789ABCDEF'
    if n<base:
        return convert_string[n]

    return toStr(n //base,base)+convert_string[n % base]


print(toStr(1000,10))
print(toStr(1000,8))
print(toStr(1000,10))
print(toStr(1000,16))

输出结果

1000
1750
1000
3E8


本文地址: http://chenxm.cc/article/1031.html
版权声明: 本文为原创文章,版权归  陈新明  所有,欢迎分享本文,转载请保留出处!
上一篇: 递归 数列求和
下一篇: mac Royal TSX(代替xshell替代品)远程连接服务器SSH,FTP
发表评论

还没有留言,还不快点抢沙发?