计算我被递归划分的次数

时间:2019-09-26 16:30:01

标签: python

我正在做一个作业,我需要找出要除以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)

1 个答案:

答案 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
相关问题