擅长:python、mysql、java
<p>不清楚你为什么对你的代码不满意。如果是因为有“太多”<code>if</code>测试,那么在没有测试的情况下很容易做到:</p>
<pre class="lang-python prettyprint-override"><code>def diffgen(a, b):
from itertools import cycle
diffs = []
current = 0
ab = a*b
while current < ab:
nextone = min((current // a + 1) * a,
(current // b + 1) * b)
diffs.append(nextone - current)
yield nextone - current
current = nextone
for d in cycle(diffs):
yield d
</code></pre>
<p>请注意,一旦到达<code>a*b</code>,diff序列就会重复,因此不需要再进行计算。在</p>