楊輝三角——再帰実現(C言語記述)
1212 ワード
タイトルの説明
中学時代に習った楊輝三角を覚えていますか.具体的な定義はここでは説明しませんが、1 1 1 1 1 2 1 1 3 1 4 4 1 5 10 5 1を参照してください.
入力
入力データには複数のテストインスタンスが含まれ、各テストインスタンスの入力には、出力する楊輝三角の層数を表す正の整数n(1<=n<=30)が1つしか含まれていない.
しゅつりょく
各入力に対応して、対応する層数の楊輝三角を出力し、各層の整数間をスペースで区切り、各楊輝三角の後ろに空行を追加します.
サンプル入力
サンプル出力
2番目のレイヤから、現在のレイヤの各数は、前のレイヤと同じ位置の数字とその前の数字の和に依存します(上位レイヤのあるビットに数字がない場合はデフォルトは0).
コードは次のとおりです.
中学時代に習った楊輝三角を覚えていますか.具体的な定義はここでは説明しませんが、1 1 1 1 1 2 1 1 3 1 4 4 1 5 10 5 1を参照してください.
入力
入力データには複数のテストインスタンスが含まれ、各テストインスタンスの入力には、出力する楊輝三角の層数を表す正の整数n(1<=n<=30)が1つしか含まれていない.
しゅつりょく
各入力に対応して、対応する層数の楊輝三角を出力し、各層の整数間をスペースで区切り、各楊輝三角の後ろに空行を追加します.
サンプル入力
2 3
サンプル出力
1
1 1
1
1 1
1 2 1
2番目のレイヤから、現在のレイヤの各数は、前のレイヤと同じ位置の数字とその前の数字の和に依存します(上位レイヤのあるビットに数字がない場合はデフォルトは0).
コードは次のとおりです.
#include
#include
void yangTri(int m[], int n[], int level, int lim)
{
int i;
for(i = 1; i <= level-1; i++) //
printf("%d ", m[i]);
putchar('
');
if(level > lim) //
return;
for(i = 1; i <= level; i++) //
n[i] = m[i]+m[i-1];
yangTri(n, m, level+1, lim);
}
int main()
{
int a[31], b[31];
int n;
int i;
while(scanf("%d", &n) != EOF)
{
memset(a, 0, sizeof(a));
memset(b, 0, sizeof(b));
a[1] = 1; // 0
i = 2; //
yangTri(a, b, i, n);
putchar('
');
}
return 0;
}