擅长:python、mysql、java
<ul>
<li>最直接的解决方案是使用模3来检查
可除性,但这不是递归的。在</li>
<li>另一种解决方案是递归地继续除以3,直到降到1为止,但对于大值,这将导致堆栈溢出。在</li>
<li>第三种适合递归的解决方案是利用这样一个特性:如果一个数的位数和可以被3整除,那么这个数就可以被3整除。在</li>
</ul>
<p>下面是第三个选项的实现,它可以避免模运算,并处理非常大的数字:</p>
<pre><code>def divThree(num):
if num < 10:
return (num in [3, 6, 9])
else:
return divThree(sum([int(digit) for digit in str(num)]))
</code></pre>
<p>如果您想将0也可以被3整除,那么可以将0添加到第一个<code>return</code>中的列表中。在</p>
<p>如果要同时包含正值和负值,请在前面加上:</p>
^{pr2}$
<p>作为要执行的第一个检查。在</p>