C语言经典例61-杨辉三角
生活随笔
收集整理的這篇文章主要介紹了
C语言经典例61-杨辉三角
小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
目錄
- 1 題目
- 2 分析
- 2.1 方法1-二項式定理
- 2.2 方法2-按規(guī)律
- 3 實現(xiàn)
- 3.1 實現(xiàn)1-二項式定理
- 3.2 實現(xiàn)2-按規(guī)律
- 4 運行結(jié)果
1 題目
打印出楊輝三角形(要求打印出10行)
2 分析
楊輝三角結(jié)構(gòu)如下所示:
1 1 1 1 2 1 1 3 3 1 1 4 6 4 12.1 方法1-二項式定理
第一眼看到楊輝三角很容易可以想到高中的數(shù)學知識–二項式定理 (a+b)n(a+b)^n(a+b)n,當nnn從000開始,它的展開式每項的系數(shù)恰好對應楊輝三角的每一行。
那么,算出每一項的系數(shù)可以通過公式,遞歸計算階層,見實現(xiàn)1
2.2 方法2-按規(guī)律
根據(jù)楊輝三角的特點:
- 每行端點與結(jié)尾的數(shù)為1
- 每個數(shù)等于它上方兩數(shù)之和
見實現(xiàn)2
3 實現(xiàn)
3.1 實現(xiàn)1-二項式定理
#include<stdio.h> #define N 10 // 打印的行數(shù) int fact(int n) { if (n == 1 || n == 0) {return 1;}return n * fact(n - 1); }int main() {for (int i = 0; i < N; i++) {for (int j = 0; j <= i ; j++) {//二項式定理展開求系數(shù)公式int k = fact(i) / (fact(i-j) * fact(j));printf("%d ", k);}printf("\n");}return 0; }3.2 實現(xiàn)2-按規(guī)律
#include <stdio.h> int main() {int i, j, a[10];a[0] = 1; printf("\n%4d", a[0]);for (i = 1; i < 10; i++) {a[i] = 1;for (j = i-1; j>0; j--) {a[j] = a[j-1]+a[j];}printf("\n");for (j = 0; j<=i; j++) {printf("%4d", a[j]);}} }4 運行結(jié)果
11 11 2 11 3 3 11 4 6 4 11 5 10 10 5 11 6 15 20 15 6 11 7 21 35 35 21 7 11 8 28 56 70 56 28 8 11 9 36 84 126 126 84 36 9 1總結(jié)
以上是生活随笔為你收集整理的C语言经典例61-杨辉三角的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 计算机网络第四章:网络层
- 下一篇: C语言经典例66-输入3个数a,b,c,