2017-11-24 18 views
0

Matlabを使用して行列内にパスカルの三角形を再帰的に生成する方法を解明しようとしています。ここ は、それがどのように見えるべきかの例です:パスカルの三角形を生成する再帰関数を作成する(Matlab)

>>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 

答えて

3

がなぜにこのニーズを行います再帰的ですか?パスカルの三角形を返すビルトイン機能pascalが(あります:あなたは、マトリックス...

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 

注意を三角形の各列にどのように多くの番号を知っているし、それダウンすることができますだけでループあなたと比べて45度回転しています)。

+1

_これは再帰的に必要なのですか?_ +1 –

関連する問題