【发布时间】:2021-09-23 23:28:03
【问题描述】:
编写一个以整数作为输入的函数,并返回在该数字的二进制表示中等于 1 的位数。你可以保证输入是非负的。
示例:1234 的二进制表示是 10011010010,所以在这种情况下函数应该返回 5。
我使用递归创建了这个程序,我想返回数组的长度。你知道怎么做吗?我想保持(如果可能的话)我写的同样的逻辑。提前致谢 **
def count_bits(n):
base = n
count = []
base = n // 2
if base:
if base % 2 ==1:
count.append(base % 2)
count += count_bits(base)
else:
count += count_bits(base)
return count
print(count_bits(1234)) # return the array and I want the length
#print(len(count_bits(1234))) # I can not use this method
【问题讨论】:
-
为什么需要一个列表? (更不用说递归了,假设它是练习的一部分。)
-
为什么它应该返回 5??
-
你好,因为10011010010中有5个