如何解决在Python中使用递归和if-else计数零
def countz(n):
if n<10:
if n==0:
return 1
else:
return 0
small=countz(n//10)
if n%10==0:
return small+1
else:
return small
from sys import setrecursionlimit
setrecursionlimit(11000)
n = int(input())
print(countz(n))
有人帮助我编写了这段代码,我不明白为什么他在递归的基本情况下使用n
解决方法
我们在这里需要的基本情况确实是n<10
,或者换句话说,n
是一个数字。
您可能会倾向于选择n==0
作为基本情况,而简单地选择return 1
是因为它有一个零:
def countz(n):
if n==0:
return 1
small=countz(n//10)
if n%10==0:
return small+1
else:
return small
但是那行不通!为什么?考虑输入9
,该输入不为零。这不是基本情况,因此我们输入递归调用:small=countz(n//10)
。 n//10
给出0
,因此我们调用countz(0)
返回1
。然后将其作为答案返回,即使应该为0
。
潜在的问题是,按照惯例,我们将数字零表示为比实际需要多一位的数字。理想情况下,它根本不包含数字,但是在日常生活中这是不切实际的!
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。