注册 登录
每天一道算法题

第一章:计算最值,次最值

第二章:进制的转换

第三章:质数,水仙花,公约数

第四章:子序列问题

首页 > 每天一道算法题 > 第二章:进制的转换 > 2.2节:十进制转二进制-递归实现

2.2节:十进制转二进制-递归实现

薯条老师 2021-03-31 16:35:47 205223 0

编辑 收藏

广州番禺Python, Java小班周末班培训

薯条老师的线下Python小班办得很好,学员的平均就业薪资有11K。线下小班培训的课程有Python爬虫,Python后端开发,Python办公自动化,Python大数据分析,Python量化投资,Java中高级后端开发。授课详情请点击:http://chipscoco.com/?cate=6

2.2.1 算法思路

十进制转二进制的方法已经在上节讲解过了,如果将题目改为通过递归函数来实现,又该怎么做呢?读者首先得彻底理解递归的含义及用法。关于递归函数的概念和代码实例,同学们可以学习这篇教程:http://chipscoco.com/?id=59

2.2.2 算法实现

# __author__ = 薯条老师


def itoa(number, radix=2):
    """
    :param number:待转换的十进制数
    :param radix: 进制的基数,默认为2,表示将number转换为二进制
    :return: 返回参数radix所对应的进制的字符串
    """
    radix_prefix = {2: "0b", 8: "0", 10: "", 16: "0x"}
    try:
        prefix = radix_prefix[radix] if number >= 0 else "-" + radix_prefix[radix]
    except KeyError:
        raise ValueError("unsupported radix:{}".format(radix))
    number = -number if number < 0 else number
    
    # 在itoa内部定义一个递归的闭包函数decimal_to_binary
    def decimal_to_binary(n):
        # 仅需一行代码即可实现十进制转二进制
        return str(n) if n <= 1 else decimal_to_binary(n // radix) + str(n % radix)
        
    return prefix + decimal_to_binary(number)
    
    
if __name__ == "__main__":
    print(itoa(15))

2.2.3 最具实力的小班培训

来这里参加Python和Java小班培训的学员大部分都找到了很好的工作,平均月薪有11K,学得好的同学,拿到的会更高。由于是小班教学,所以薯条老师有精力把每位学员都教好。打算参加线下小班培训的同学,必须遵守薯条老师的学习安排,认真做作业和项目。把知识学好,学扎实,那么找到一份高薪的工作就是很简单的一件事。

(1) Python后端工程师高薪就业班,月薪11K-18K,免费领取课程大纲
(2) Python爬虫工程师高薪就业班,年薪十五万,免费领取课程大纲
(3) Java后端开发工程师高薪就业班,月薪11K-20K, 免费领取课程大纲
(4) Python大数据分析,量化投资就业班,月薪12K-25K,免费领取课程大纲

扫码免费领取学习资料:



欢迎 发表评论:

请登录

忘记密码我要注册

注册账号

已有账号?请登录