擅长:python、mysql、java
<p>这是一个简单的解决方案,无递归,无任何,O(N):</p>
<pre><code>#!/usr/bin/env python
DICE = 6 # how many sides our dice has
rolls = [1]
for i in range(1,800) :
rolls.append(sum(rolls[-min(i,DICE):]))
print rolls[:16] # print results for the first 16 (zero-based!!)
print rolls[610] # print result for 610 steps
</code></pre>
<p>结果:</p>
<pre><code>[1, 1, 2, 4, 8, 16, 32, 63, 125, 248, 492, 976, 1936, 3840, 7617, 15109]
14527490260516100855695859704819627818108010882741117227956927412305738742399171256642436462028811566617818991926058940988565927870172608545709804976244851391054850231415387973537361
</code></pre>
<p>可以轻松计算N=50000或500000的卷数</p>