加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Python > 正文

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

发布时间:2020-12-17 17:02:26 所属栏目:Python 来源:网络整理
导读:把整数转换成十进制过程 十进制有是个不同的符号: conv_string="0123456789" 计算过程 比十小的整数,转换成十进制,直接查找conv_string:conv_string[n] 比十大的整数,拆成一系列比十小的整数,逐个查表,如769,拆成7,6,9查表可以得到769。 递归写法

把整数转换成十进制过程

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

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


(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读