パスカル三角形を表示するためのプログラミングに関する質問を解決しました。コードでは、すべての行の最後の要素をゼロに設定しました。それでも、6行目は最後の要素の出力を50とします。私はこれの理由を理解することができません。親切に助けてください。コードが添付されています。動的な2D配列の特定の行で予期しない出力が発生しました
int ** generate(int A, int *number_of_rows) {
*number_of_rows = A;
int i,j,nc=0;
int **result = (int**)malloc(A * sizeof(int *));
for(i=0;i<A;i++)
{
nc=i+1;
result[i]=(int)malloc(nc*sizeof(int));
result[i][0]=nc;
result[i][1] = 1;
for(j=2;j<nc;j++)
{
result[i][j]=result[i-1][j]+result[i-1][j-1];
}
}
return result;
}
編集:すべての行の
最初の要素は、その行の列数を表示します。
'nc'を決してリセットしません。これは意図されていますか? –
'i 'が0のとき' result [i-1] 'は動作しません。最初の要素を' 1'に設定し、 'i = 1'から反復します。 –
内側のjループはj = 2から始まります。つまり、外側のループのmalloc文のためにi> 0の場合のみです。 –