我一直试图找到如何使用递归检查整数的长度。例如: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)
答案 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