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

标签 python recursion

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

我在网上看到的都是最后一位数字的求和。我无法寻求有关整数长度的帮助。

有人可以帮我解决这个问题吗? 我尝试过使用lens来计数,但我的输出总是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)

最佳答案

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

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

此代码将在每次使用 N/10 调用该函数时添加 1,直到达到 0,因此最后根据您的数字可以除以 10 的时间,您将得到 1相加后,最后为 0 则加 0。

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

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

关于python - 如何使用递归计算整数的长度,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33008152/

相关文章:

C 将字符串构建为递归遍历二叉树

javascript - 递归范围函数不起作用

python - 无法使用Python连接到MSSQL Server数据库

python - 计数器 most_common 元素作为生成器

Javascript嵌套数组获取元素

c++ - 递归反转链表的函数

python 正态分布

python - Scipy map_coordinates 双线性插值与 interp 和 IDL 插值相比

python - 使用作业DSL通过groovy脚本执行python脚本

algorithm - 无法弄清楚这种重复的复杂性