擅长:python、mysql、java
<p>我不知道没有Y组合器怎么做</p>
<p>您将不得不执行以下操作:</p>
<pre><code>def F(n):
return [1] if n == 0 else [a + b for a, b in zip([0] + F(n - 1), F(n - 1) + [0])]
</code></pre>
<p>然后使用<a href="https://en.wikipedia.org/wiki/Fixed-point_combinator" rel="nofollow noreferrer">Y combinator</a>将递归函数转换为lambda。F(n)返回三角形的第n行,使用每个元素是其上两个元素的和这一事实</p>
<hr/>
<p>如果你不喜欢打两次F(n-1),那么</p>
<pre><code>def F(n):
return [1] if n == 0 else \
(lambda v: [a + b for a, b in zip([0] + v, v + [0])])(F(n - 1))
</code></pre>
<p>使用可以使用lambda创建临时变量的事实。您仍然需要使用Y组合符来消除该函数</p>