我是编程新手(请注意:),我正在try 编写一个函数,通过使用模函数收集整数的位,然后计算1s之间的0个数,并显示两个1s之间的最长链0,使用递归计算数字的二进制间隙.
例如
Input = 10, Binary value = 1010, Binary Gap = 1
Input = 15, Binary value = 1111, Binary Gap = 0
Input = 41, Binary value = 101001, Binary Gap = 2
目前,如果输入偶数,下面的代码将始终返回0,如果使用奇数,则始终抛出递归错误.这让我相信存在一个涉及除法的问题,它被困在一个无限循环中,但无法找出原因.
def binary_gap(n, foundFirstOne= False, numofZeros= 0):
if n == 0:
return 0
bit = n % 2
if bit == 1:
ans = binary_gap((n / 2), True, 0)
else:
if foundFirstOne == True:
ans = binary_gap((n / 2), True, numofZeros+1)
else:
ans = binary_gap((n / 2), False, 0)
return ans and numofZeros
print(binary_gap(int(input("Please enter a number"))))