建立和打印杨辉三角

杨辉三角的计算公式:a[i][j] = i! / (j! * (i-j)!)

公式说明:i(行数,从0开始),j(第i行的第j个元素,从0开始)

思路:先创建一个动态数组,然后赋值并打印即可。

存在问题:int** CreateYaHuiSanJiao(int col)二维指针未释放,不知函数结束后系统会不会自动释放?




#include <iostream>
using namespace std;

//求n的阶乘
int fn(int n)
{
if (0 == n)
return 1;
int result = 1;
for (int i = 1; i <= n; ++i)
result *= i;
return result;
}


//创建n行的杨辉三角
int** CreateYaHuiSanJiao(int col)
{
//开辟二维数组并分配空间
int i,j;
int** pa = new int*[col];
for (i = 0; i < col; ++i)
pa[i] = new int[col];


//初始化
for ( i = 0; i < col; ++i)
for ( j = 0; j < col; ++j)
pa[i][j] = 0;


for ( i = 0; i < col; ++i)
for ( j = 0; j < i + 1; ++j)
pa[i][j] = fn(i) / (fn(j) * fn((i-j)));


//释放内存空间
//for (i = 0; i < col; ++i)
// delete[] pa[i];
//delete[] pa;
return pa;
}


//打空格
void pSpace(int n)
{
if (n <=0 )
return;
cout << " ";
--n;
pSpace(n);
}


int main()
{
int** a = NULL;
int col = 14;
int i, j;
a = CreateYaHuiSanJiao(col);

//打印杨辉三角
for ( i = 0; i < col; ++i)
{
pSpace(col - i);
for ( j = 0; j < col; ++j)
{
if (a[i][j] != 0)
cout << a[i][j] << " ";
}
cout << endl;
}


return 0;
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值