1. 程式人生 > >C語言實現楊輝三角的列印

C語言實現楊輝三角的列印

列印楊輝三角

這裡介紹兩種方法

第一種

第一眼看到楊輝三角很容易可以想到高中的數學知識–二項式定理(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"); } }