创建一个生成Pascal三角形的递归函数(Matlab)

时间:2017-11-24 15:42:51

标签: matlab recursion pascals-triangle

我一直试图弄清楚如何使用Matlab在矩阵中递归生成Pascal的三角形。 以下是它应该如何显示的示例:

 >>PascalT(0)  
 ans =  
  1

 >>PascalT(1)  
 ans =  
  0 1 0  
  1 0 1

 >>PascalT(2)  
 ans =  
  0 0 1 0 0   
  0 1 0 1 0  
  1 0 2 0 1

 >>PascalT(3)  
 ans =  
  0 0 0 1 0 0 0  
  0 0 1 0 1 0 0   
  0 1 0 2 0 1 0  
  1 0 3 0 3 0 1

到目前为止,我的代码很空,因为我无法弄清楚如何执行此操作:

function AA = PascalT(n)  
    if n == 0   
        AA = 0;  
    else  
        rec = PascalT(n-1);  
        AA = zeroes(n+1,2*n+1);  

    end  
end

1 个答案:

答案 0 :(得分:3)

为什么这需要递归?你知道三角形的每一行中有多少个数字,并且可以将矩阵循环到矩阵......

function AA = PascalT( n )
    % Initialise matrix. Use 2n+3 cols so that we have additional 0s for edges
    AA = zeros(n+1, 2*n + 3);
    % First row...
    AA(1, n+2) = 1;
    % Loop over rows         
    for r = 2:n+1
        % Create row r by adding left-shifted and right-shifted row above
        AA(r, 2:end-1) = AA(r-1, 1:end-2) + AA(r-1, 3:end);
    end
    % Remove extra zeros on the edges
    AA = AA(:, 2:end-1);
end

注意:有一个内置函数pascal可以返回Pascal三角形(与你的相比旋转45度),你会发现它很有用。