如何使用递归计算整数的长度

时间:2015-10-08 06:28:19

标签: python recursion

我一直试图找到如何使用递归检查整数的长度。例如:100,它会说有3个数字。 12,它会说有2个数字。

我在网上看到的只是最后一位数的总和。我无法获得有关整数长度的帮助。

有人可以帮我解决这个问题吗? 我尝试使用镜头进行计数,但我的输出始终为0。

def num(x):
   if x == 0:
       return 0
   else:
       return num(x / 10)
print len(str(num(100)))

我也试过这个

def num(x):
       if x == 0:
           return 0
       else:
           return num(x / 10) + len(str(x % 10))
    print num(100)

2 个答案:

答案 0 :(得分:1)

如果N不为0,则需要使用num(N/10)添加1:

>>> def num(N):
...   if N==0:
...      return 0
...   return 1+num(N/10)
... 
>>> num(100)
3

这个代码会在每个调用函数N/10中添加一个,直到它变为0,所以最后根据你的数字除以10的时间你将得到1的总和,最后为0,他们将添加0。

例如,对于100,您的函数将执行以下操作:

1+(100/10)
      ^
1+1+(10/10)
       ^
 1+1+1(1/10)
        ^
  1+1+1+0

答案 1 :(得分:1)

你在找这个 -

def numlen(i):
    if i:
        return numlen(i//10) + 1
    return 0