📜  使用递归从十进制到二进制数(1)

📅  最后修改于: 2023-12-03 15:06:59.118000             🧑  作者: Mango

递归从十进制到二进制

什么是递归

递归是一种解决问题的方法,它将大问题分解成无数个相同或相似的小问题来解决。递归一般包含两个情况:基线条件和递归条件。

基线条件是指当函数不需要再继续递归时,即达到问题的最小规模时,函数直接返回结果。递归条件是指函数继续递归的条件。

思路

将十进制数不断除以2,直到结果为0,每次记录下余数即可得到二进制数。

代码实现
def decimal_to_binary(n):
    if n == 0:
        return ''
    else:
        return decimal_to_binary(n // 2) + str(n % 2)

递归函数decimal_to_binary(n)的基线条件是当n等于0时,函数直接返回空字符串。递归条件是将n除以2,得到商和余数,然后将商作为参数传入递归函数,最后将商对应的二进制数和余数拼接起来。

测试
print(decimal_to_binary(10)) # 输出 '1010'
print(decimal_to_binary(15)) # 输出 '1111'
print(decimal_to_binary(8)) # 输出 '1000'
总结

递归可以让代码更加简洁易懂,但需要注意避免无限递归和过多的递归次数导致栈溢出等问题。适当使用递归可以使程序更高效,但对于一些简单的问题,使用递归可能并不是最优解。