因此,我尝试在python中实现一个pascal三角形,它可以生成以下内容:
pascal_triangle(5) prints:
1
1 1
1 2 1
1 3 3 1
1 4 6 4 1
问题是我试图在不使用任何类型的循环的情况下完成它,但却不知道如何做到这一点。任何帮助都将不胜感激。比你强。在
到目前为止,我得到的是:
^{pr2}$
更新时间:
print_pascal_line(r):
if r == 0:
return 1
else:
R = print_pascal_line(r-1)
return 1 +
Tags:
首先创建一个函数来打印pascal三角形的第n行,我建议您使用组合,而不是使用阶乘手动计算每一行中的值,这样效率会更高。假设这个函数名为print_pascal_line,它接收一个整数,即行号。在
你只需要:
或者,您可以使用默认参数仅在一个函数中使用:
^{pr2}$用binomial coefficient计算帕斯卡三角形的每个元素。这个值通常被称为}事物?”在
nCr
,它询问“给定的n
项您可以用多少种方式C
选择{以}为例。我们可以用多少种方法创建以下尺寸的组合?在
a
、b
、和{{}
{a}
,{b}
,或{{a, b, c}
你知道吗,正好是帕斯卡三角形的第三层:
1 3 3 1
!事实证明,我们可以在每一个层面上使用它。在那么,我们该如何编码呢?看看this answer我们得到了
^{pr2}$nCr
函数最后,让我们创建一个递归函数来将它们联系在一起。在
从技术上讲,这应该是
pascal(4)
,因为Pascal的三角形是零索引的*,但我只是根据OPs请求。如果我们想改变这个,我们将把pascal
函数改为一个纯递归的解决方案(没有循环,没有赋值,没有外部模块,只有使用的python函数是
sum
,这也是可以避免的)。这段代码可以很容易地翻译成LISP家族语言。在内部函数
nextline
基于当前行递归地导出pascal三角形中的下一行(不带前导1)。在函数
pascal_line
通过递归地调用nextline
和(n-1)th线(它自己以前的解决方案),导出pascal三角形中的nth线。在函数
pascal_triangle
通过递归调用pascal_line
输出pascal三角形中的行。在三个递归函数一起很好地说明了递归方法的典型分而治之的本质。在
相关问题 更多 >
编程相关推荐