程序分析:
前面已经介绍了用二维数组、一维数组写杨辉三角,这里再一种不用数组的方法,这种方法是三种当中最难的一个。
在写程序之前我们要发现杨辉三角的每个位置上的数字的特征,即:
第n行:第一个值是1,第二个值1*(n-1)/1,第三个值1*(n-1)*(n-2)/2,第四个数为1*(n-1)*(n-2)/2×(n-3)/3,...…依此类推,有了这样的规律就不难写出程序语言:tmp = tmp * (i - (j - 1)) / (j - 1)。
//不用数组
#include <stdio.h>
#include <assert.h>
#include <stdlib.h>
void YangHui0(const int n)
{
int tmp = 0;
for (int i = 1; i <= n; i++)
{
for (int j = 1; j <= i; j++)
{
if (j == 1)//第一个特殊处理,其他的用公式
{
tmp = 1;
}
else//公式第n行:第一个值是1,第二个值1*(n-1)/1,第三个值1*(n-1)*(n-2)/2,第四个数为1×(n-1)×(n-2)/2×(n-3)/3…依此类推
{
tmp = tmp * (i - (j - 1)) / (j - 1);//1 3 3 1
}
printf("%-5d", tmp);
}
printf("\n");
}
}
int main()
{
YangHui0(10);
return 0;
}
调试结果为: