1. 程式人生 > >巴斯卡三角形 C++版

巴斯卡三角形 C++版

/*
帕斯卡三角形,是一個三角形矩陣,其頂端是 1,視為(row0).
第1行(row1)(1&1)兩個1,這兩個1是由他們上頭左右兩數之和 
(不在三角形內的數視為0).依此類推產生第2行(row2):0+1=1;
1+1=2;1+0=1.第3行(row3):0+1=1;1+2=3; 2+1=3;1+0=1. 循此
法可以產生以下諸行。
*/
#include<iostream>
#include<iomanip>
using namespace std;


long combi(int n,int r)//n為行數,r為控制列印的空格
{
int i;

long p=1;

for(i=1;i<=r;i++)
{
p=p*(n-i+1)/i;
}
return p;
}


int main()
{
while(1)
{
int N=0;
cout << "請輸入一個正整數:";
cin >> N;
if(N > 0 && N < 30)//N的值僅作測試用
{
int n,r;
cout << "巴斯卡三角形列表如下:";
cout << endl;
for(n=0; n<=N;n++)
{
for(r=0;r<=n;r++)
{
int i;//排版開始
if(r==0)
{
for(i=0;i<=(N-n);i++)
cout << "  ";
}
else
{
cout << "  ";
}//排版結束
cout << setw(3) << combi(n,r);
}
cout << endl;
}
}
else
{
cout << "請輸入正確的指令!!" << endl;
exit(1);
}


cout << endl;
cout << endl;
}
return 0;
}