### 再帰を使ったコードを再帰除去した際に違う結果がでてしまいます。
c言語を用いて、パスカルの三角形を描くプログラムを再帰を使って作りました。それが以下のコードになります。
C
1int pascal(int i, int j){ 2 if(i == j || j == 0){ //左端と右端は0 3 return 1; 4 } else { //一つ上の二つの要素の合計 5 return pascal(i-1, j-1) + pascal(i-1, j); 6 } 7}
この再帰を使ったパスカルの計算はうまく機能しました。そこで、再帰除去を行ったところ(以下のコード)、計算の結果がうまく合いません。
c
1int pascal(int i, int j){ 2 int tpas[i][j]; 3 4 if (j == 0){ //左端は0 5 return tpas[i][j] = 1; 6 } else if(j == i){ //右端は0 7 return tpas[i][j] = 1; 8 } else { //一つ上の二つの要素の合計 9 return tpas[i - 1][j - 1] + tpas[i - 1][j]; 10 } 11}
再帰除去の過程でどこがおかしいのか教えていただきたいです!

回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。