数据结构与算法(Python版)十九:递归的应用(任意进制转换)

整数转换为任意进制

我们用最熟悉的十进制分析下这个问题

十进制有十个不同符号: convString ="0123456789"比十小的整数,转换成十进制, 直接查表就可以了: convString[n]想办法把比十大的整数,拆成一系列比十小的整数,逐个查表比如七百六十九,拆成七、六、九,查表得到769就可以了

所以, 在递归三定律里, 我们找到了“基本结束条件”, 就是小于十的整数

拆解整数的过程就是向“基本结束条件”演进的过程

我们用整数除, 和求余数两个计算来将整数一步步拆开

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

问题就分解为:

余数总小于“进制基base”,是“基本结束条件”,可直接进行查表转换整数商成为“更小规模”问题,通过递归调用自身解决
在这里插入图片描述

下面就是递归算法的代码

def toStr(n, base):
    convertString = "0123456789ABCDEF"
    if n < base:
        return convertString[n]
    else:
        return toStr(n//base, base) + convertString[n % base]

print(toStr(1453, 16))
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值