下面是楊輝三角
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,寫的文章。