C語言實現楊輝三角的列印
阿新 • • 發佈:2018-12-09
列印楊輝三角
這裡介紹兩種方法
第一種
第一眼看到楊輝三角很容易可以想到高中的數學知識–二項式定理(a+b)^n,當n從0開始,它的展開式每項的係數恰好對應楊輝三角的每一行 1 1 1 1 2 1 1 3 3 1 1 4 6 4 1 1 5 10 10 5 1 ··················· 算出每一項的係數可以通過公式: 遞迴計算階層
#include<stdio.h>
#include<stdlib.h>
int main() {
int f(int i); //宣告計算階層的函式f
int i, j, xishu; //i代表行數,
int n = 7; //列印的行數
for (i = 0; i < n; i++) {
for (j = 0; j <= i ; j++) {
xishu = f(i) / (f(i - j)*f(j));//二項式定理展開求係數公式
printf("%d ", xishu);
}
printf("\n");
}
system("pause");
return 0;
}
int f(int i) { //計算階層n!的實現(遞迴)
if (i == 1 || i == 0)
return 1;
return i * f(i - 1);
}
第二種
根據楊輝三角的特點: 1. 每行端點與結尾的數為1. 2. 每個數等於它上方兩數之和。 1 1 a 1 1 a1 a1 1 ··················· a代表:a[i][j] = a[i - 1][j - 1] + a[i - 1][j] a1代表下一輪:a[i][j] = a[i - 1][j - 1] + a[i - 1][j] 肩上的兩數相加
#include<stdio.h>
#include<stdlib.h>
#define N 7 //以7行7列為例
int main()
{
int a[N][N]; //定義N行N列的楊輝三角
int i, j;
for (i = 0; i < N; i++) //先賦值楊輝三角兩邊
{
a[i][0] = 1;
a[i][i] = 1;
}
for (i = 2; i < N; i++) // 計算中間的數值
{
for (j = 1; j < i; j++)
a[i][j] = a[i - 1][j - 1] + a[i - 1][j];
}
for (i = 0; i < N; i++) // 輸出
{
for (j = 0; j < i + 1; j++)
printf("%d ", a[i][j]);
printf("\n");
}
}