微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

递归 整数转换为任意进制递归算法

把整数转换成十进制过程

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

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,16))

输出结果

1000
1750
1000
3E8


版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐