日韩av黄I国产麻豆传媒I国产91av视频在线观看I日韩一区二区三区在线看I美女国产在线I麻豆视频国产在线观看I成人黄色短片

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 >

C语言经典递推算法之杨辉三角展开(详解)

發布時間:2024/3/24 58 豆豆
生活随笔 收集整理的這篇文章主要介紹了 C语言经典递推算法之杨辉三角展开(详解) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

文章目錄

    • 一、遞推算法
    • 二、楊輝三角展開

一、遞推算法

這是一種比較簡單的算法,即通過已知條件,利用特定關系得到中間結論,然后得到最后結果的算法。遞推算法可以分為順推和逆推兩種。

二、楊輝三角展開

1、楊輝三角

  • 楊輝三角,是二項式系數在三角形中的一種幾何排列。
  • 楊輝三角的性質:
    每個數等于它上方兩數之和。
    每行數字左右對稱,由1開始逐漸變大。
    第n行的數字有n項。
    前n行共[(1+n)n]/2 個數。
    第n行的m個數可表示為 C(n-1,m-1),即為從n-1個不同元素中取m-1個元素的組合數。
    第n行的第m個數和第n-m+1個數相等 ,為組合數性質之一。

2、算法步驟
(1)每個數字等于上一行的左右兩個數字之和。可用此性質寫出整個楊輝三角。即第n+1行的第i個數等于第n行的第i-1個數和第i個數之和,這也是組合數的性質之一。即 C(n+1,i)=C(n,i)+C(n,i-1)。

(2)(a+b)n的展開式中的各項系數依次對應楊輝三角的第(n+1)行中的每一項。

(3)將第2n+1行第1個數,跟第2n+2行第3個數、第2n+3行第5個數……連成一線,這些數的和是第4n+1個斐波那契數;將第2n行第2個數(n>1),跟第2n-1行第4個數、第2n-2行第6個數……這些數之和是第4n-2個斐波那契數。

(4)將第n行的數字分別乘以10(m-1),其中m為該數所在的列,再將各項相加的和為11(n-1)

3、C語言實現

#include <stdio.h> #define N 8void main() {int a[N+1][N+1], i, j;for(i=0; i<=N; i++){a[i][i]= a[i][0]= 1;}for(i=2; i<=N; i++){for(j=1; j<i; j++){a[i][j]= a[i-1][j]+ a[i-1][j-1];}}printf("%d 階楊輝三角:\n", N+1);for(i=0; i<=N; i++){for(j=0; j<=i; j++)printf("%4d",a[i][j]);printf("\n"); } }

4、算法思想
使用二維數組存放楊輝三角中的數據元素,初始時,將第1列和對角線上的元素初始化為1,即a[i][0]=a[i][i]=1,
然后利用每一行元素值是它上一層兩個相鄰元素之和求其他元素值,即a[i][j]= a[i-1][j]+a[i-1][j-1]。

參考文獻:《The Function and Algorithm of Program Language C/C++》

總結

以上是生活随笔為你收集整理的C语言经典递推算法之杨辉三角展开(详解)的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。