我需要创建一个递归函数,如果输入的数字可以被3整除,则返回true。我知道没有递归会更简单,但是我需要创建一个这种类型的函数。在
我已经创建了一个函数,但是我想知道是否有可能创建一个更好的函数,因为有一个大的“num”,这个函数不能工作。我想我应该用这个事实:如果一个自然数的位数之和可以被3整除,那么它就可以被3整除。在
这是我的代码:
def divThree(num):
if num==3:
return true
else:
divThree(num-3)
编辑:我创建了一个更好的函数,但是我不明白如果这个数可以被3整除,为什么不返回true。相反,如果不是,则会出现最大递归错误。在
^{pr2}$
递归放大要减去的因子:
下面是第三个选项的实现,它可以避免模运算,并处理非常大的数字:
如果您想将0也可以被3整除,那么可以将0添加到第一个
return
中的列表中。在如果要同时包含正值和负值,请在前面加上:
^{pr2}$作为要执行的第一个检查。在
当使用3作为除数时,需要检查数字是否有零余数。在
使用
%
运算符检查余数。因此,如果你想知道某个东西是否可以被3整除,那么使用num % 3 == 0
如果余数为零,那么这个数可以被3整除。在这将返回true:
这将返回False:
^{pr2}$这里有一个简单的函数来检查真与假:
编辑:
我不确定你要检查的数字有多大,但我用我认为是一个很大的数字测试了这个函数,它起作用了。我可能只是不明白你需要思考什么。在
相关问题 更多 >
编程相关推荐