Javascript 帕斯卡';JS中带递归的s三角形-询问解释

Javascript 帕斯卡';JS中带递归的s三角形-询问解释,javascript,recursion,functional-programming,pascals-triangle,Javascript,Recursion,Functional Programming,Pascals Triangle,我已经检查了其他主题。看起来这些问题主要涉及C++和Python DeVS,但希望能更好地理解递归。 Pascal三角形是由边上的1和内部上两个数字之和组成的三角形: 1 1 1 1 2 1 1 3 3 1 1 4 6 4 1 . . . 代码如下: 函数pascalTriangle(行、列){ 如果(列==0){ 返回1; }else if(行===0){ 返回0; }否则{ 返回pascalTriangle(第1行,列)+pascalTriangle(第1行,列-1

我已经检查了其他主题。看起来这些问题主要涉及C++和Python DeVS,但希望能更好地理解递归。 Pascal三角形是由边上的1和内部上两个数字之和组成的三角形:

1
1 1
1 2 1
1 3 3 1
1 4 6 4 1
.
.
.            
代码如下:

函数pascalTriangle(行、列){
如果(列==0){
返回1;
}else if(行===0){
返回0;
}否则{
返回pascalTriangle(第1行,列)+pascalTriangle(第1行,列-1);
}
}
代码不绘制图表,只返回三角形中最内部的值

我的问题是关于递归else语句:

调用堆栈如何执行else语句? 这条线背后的逻辑是什么

如果您渴望帮助,可获得奖金

在完成对特定行的执行后,如何让代码移到下一行?

这似乎可行

函数构建三角形(行){
让结果=[]
for(设行=0;行<行;行++){
让rowData=[]

对于(让col=0;col让我们从一个相当一般的解释开始,并在此过程中变得更具体,以获得更好的递归直觉。递归是一种将问题分解为最小实例,而不是逐个组合这些实例以获得解决方案的策略

给定问题的最小实例是什么?
0
1
,因为它们是由两个基本情况返回的。每个递归步骤最终将产生一个基本情况。因为我们有两个不同的递归步骤
pascalTriangle(row-1,col)
pascalTriangle(row-1,col-1)
,以下排列可能是可能的:

0 + 0
0 + 1
1 + 0
1 + 1
这些操作代表给定问题的最小实例。请注意,您可以用基本情况替换递归步骤,但您得到的只是递归算法的快照。更重要的是更复杂

递归算法还有一个重要的特性我们还没有提到:它们创建嵌套的计算结构。嵌套是递归固有的。让我们可视化一下由
pascalTriangle
创建的嵌套结构。我们可以手动替换,也可以自动调整函数:

函数pascalTriangle(行、列){
如果(列==0){
返回1;
}else if(行===0){
返回0;
}否则{
返回“(${pascalTriangle(row-1,col)}+${pascalTriangle(row-1,col-1)}”);
}
}
console.log(pascalTriangle(4,2));

//(((0+0)+(0+1))+((0+1)+1))+(((0+1)+1))
实际上
其他
s是不需要的。您的函数在没有它们的情况下将返回相同的结果,只有to
if
s和
return