我正在做一个作业,我需要找出要除以1或更少(n)的次数,然后将该数字加1(n)。我已经完成所有设置,但是例如,我不知道如何在末尾添加1。如果输入20,我应该得到6,但是我的代码输出5。
def divisions(n):
if n <= 1:
return 1
return divisions(n // 2) + 1
n = input("Enter a number:")
print divisions(n)
答案 0 :(得分:0)
正确的解决方案应该是4:
如果要从20中获得1,则需要除以2 4次:
20//2 = 10 #1
10//2 = 5 #2
5//2 = 2 #3
2//2 = 1 #4
您的递归函数应该是这样的:
def divisions(n):
if n <= 1:
return 0 # here
return divisions(n // 2) + 1
n = input("Enter a number:")
print(divisions(int(n))) # here you need to do a cast from string to int
不使用//
运算符(//
是无条件的“地板除法”),正确的解决方案应该是5:
20 / 2 = 10.0 # 1
10.0 / 2 = 5.0 # 2
5.0 / 2 = 2.5 # 3
2.5/ 2 = 1.25 # 4
1.25 / 2 = 0.625 # 5