Python 数一数我';用递归进行除法

Python 数一数我';用递归进行除法,python,Python,我在做一项作业,我需要找出我需要除以多少次才能达到1或更少(n),然后在这个数字(n)上加1。例如,我已经完成了所有设置,但我不知道如何在末尾添加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) def分区(n): 如果n正确的溶液应为4:

我在做一项作业,我需要找出我需要除以多少次才能达到1或更少(n),然后在这个数字(n)上加1。例如,我已经完成了所有设置,但我不知道如何在末尾添加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)
def分区(n):

如果n正确的溶液应为4:

如果要从20中获得1,则需要除以2 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

现在是切换到Python 3的时候了。Python2的生命即将结束。
print divisions(n)+1
20
为您提供了另一个
+1
。它应该是
5
。不清楚OP从哪里得到
6
。嗯,我想应该是4。再次检查我的答案@huck_cussler。现在应该更清楚了,因为您的编辑,您现在忽略了在基本情况下返回的
1
n Yes@huck\u cussler,我要说的是正确的解决方案应该是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
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