楊輝三角(一)正置

下面是楊輝三角

                         1

                     1      1

                  1     2     1

              1     3     3     1

           1     4     6     4     1

        1     5    10    10    5    1

     1     6    15    20   15    6    1

 1     7     21    35   35   21   7    1

其特點是兩個邊界都是1,其餘的中間的數,每一個數都是其肩膀上兩個數的和,
其中楊輝三角和二項式定理有着直接的關係,當(a+b)^n中n的取值分別爲0,1,2,3
其各項的係數分別對應楊輝三角的第1,2,3,4行,

即是n取一個固定值(作行數),然後變換r的值進行計算,輸出

通過查閱資料得到:
二項式展開式公式爲:
在這裏插入圖片描述
在這裏插入圖片描述

在楊輝三角中,令上面公式中的n爲n-1,令r爲k-1,得出的值爲楊輝三角中第n行第k個數的值,也就是

Ck-1n-1 = (n-1)!/((k-1)!*(n-k)!)。爲了輸出美觀,我們要在每行的左邊打印空格,假設我們要打印楊輝三角的前num行,如果最後一行,

也就是最長的一行前不打印空格,則第n行前的空格個數爲num-n個。
代碼片段

#include<iostream>

//求階乘的函數
int factorial(int num)
{
    if (num == 0)
        return 1;
    else
    {
        int result = 1;
        for (int i = 1; i <= num; ++i)
            result *= i;
        return result;
    }
}

//打印楊輝三角的函數
void function(int rowNum)
{
    int value;
    for (int n = 1; n <= rowNum; ++n) //對於每一行
    {
        for (int i = 0; i <= rowNum - n; ++i)  //打印每行前的空格
            std::cout << " ";
        for (int k = 1; k <= n; ++k)  //打印每行的每個數
        {
            value = factorial(n - 1) / (factorial(k - 1)*factorial(n - k));
            std::cout << value << " ";
        }
        std::cout << std::endl;
    }
}

int main()
{
    int lineNum;
    std::cout << "請輸入要打印的行數:" << std::endl;
    std::cin >> lineNum;
    function(lineNum);
    system("pause");
    return 0;
}

本人蔘考博客園,博主yibo,寫的文章。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章