<p>这里有两个复发关系的病例。考虑到<strong>n</strong>是序列运行的月数,而<strong>m</strong>是一对生命将持续的月数:</p>
<p>1)如果序列中的索引(基于零)小于<strong>m</strong>:<br/>
<strong>正态Fibonacci(当前项=前一项+前一项)。</p>
<p>2)如果指数大于或等于<strong>m</strong>:<br/>
当前项=<strong>以前项的总和(<em>m-1</em>)(忽略前面的项)。</strong></p>
<blockquote>
<p>Here's an example with a sequence named <strong>A</strong> and <strong>m = 5</strong>:<br/>
A5 = A0 + A1 + A2 + A3 (4 terms, <em>i.e.</em> <strong>m - 1</strong>, ignoring the one immediately before)<br/>
.<br/>
If <strong>m = 3</strong> then:<br/>
A3 = A0 + A1 (only 2 terms, <strong>m - 1</strong>)</p>
</blockquote>
<p>是的。</p>
<p>下面的代码(在Python中)有一个偏移量为2,这是因为序列开头的初始值[1,1]。</p>
<pre><code>def mortal_rabbits(n, m):
sequence = [1, 1]
for i in range(n - 2):
new_num = 0
if i + 2 < m:
#Normal fibonacci - No deaths yet
new_num = sequence[i] + sequence[i + 1]
else:
#Different reoccurence relation - Accounting for death
for j in range(m - 1):
new_num += sequence[i - j]
sequence.append(new_num)
return sequence
</code></pre>