/*05-06-10 21:40
递归打印杨辉三角:这里要知道一个定论:
1
1 1
1 2 1
1 3 3 1
1 4 6 4 1
1 5 10 10 5 1
i(>=0)代表第几行,j(>=0)代表第几个位置的数 规律如下
第4行第一个数为3:3!/(2!*(3-2)!) =3 数从0开始 ,行业从0开始
第4行第0个数为3: 3!/(0!*(3-0)!)=1
杨辉三角满足一个组合公式:n!/(!m*!(n-m)) 利用此公式就可求出每一个数
公式如下:
某个位置杨辉三角数= 当前行数的阶乘(从0开始)/( 列的位置数组成的阶乘从0开始) *(行数-列组成数的阶乘) )
*/
#include<iostream>
using namespace std;
int fun(int n) //n代表行数
{
if (n==0 )
{
return 1;
}
else
{
return n*fun(n-1);
}
}
int main()
{
int n;
int i,j;
int c; //保存杨辉三角的临时变量
int curline; //当前行数的阶乘,从0开始
int backline; //行数-列位置所构成的阶乘
int position; //行的第几个位置的阶乘
cout<<” 请输入你要输出杨辉三角的行数:”;
cin>>n;
for (i=0; i<=n; i++)
{
for(int k=i;k<n;k++) cout<<” “; //输出前面的空格(2),和后面的空格要好好配合
for (j=0; j<=i; j++) //等于号要注意
{
curline = fun(i); //当前行数的阶乘,从0开始
backline = fun(i-j); //行数-列位置所构成的阶乘
position = fun(j); //行的第几个位置的阶乘
c = curline/(backline * position); //具体位置杨辉三角的值
cout<<c<<” “; //5个空格
}
cout<<endl; //输出一行换行处理
}
cout<<endl;
system(“pause”);
return 0;
}