如何在单行而不是该序列中打印[6,4,2,0]的输出

时间:2015-04-22 17:09:55

标签: python

我使用下面的手动方法,恰好找到给定整数的二进制值的高位= 1。

例如:当我们输入85时,第6,第4,第2和第0位为高,我按顺序将输出作为6 4 2 0。实际上我需要这样的输出:[6,4,2,0]。任何人都可以帮助我吗?

def high_bit(num):
    for i in range(0,100):
        if (num/(pow(2,i)))==1: 
            print i
            num = (num - (pow(2,i)))
            y = high_bit(num)
            return y

1 个答案:

答案 0 :(得分:0)

我发现你的递归有点混乱,但它可以工作:

def high_bit(num, lst=None):
    if lst == None:
        toplevel = True
        lst = []
    else:
        toplevel = False
    for i in range(0,100):
        if (num/(pow(2,i)))==1: 
            lst.append(i)
            num = (num - (pow(2,i)))
            high_bit(num, lst)
    if toplevel:
        print lst

high_bit(85) # prints [6, 4, 2, 0]

我建议迭代地这样做。

相关问题