本文目录一览:
C语言 杨辉三角代码(非数组)求解释
#includestdio.h
#define N 15
void main()
{
int i,j,k;
long long b,c;//下面的乘法计算的时候如果N大了,会超过int的最大值,改为long long
for(i=0; iN; i++)
{
for(j=0; j=i; j++)
{
b=c=1;
if(j=1) //从此行开始,每一行都解释一下
{
for(k=i-j+1; k=i; k++)
b*=k;
for(k=1; k=j; k++)
c*=k; //解释到这里结束
}
printf("%-5d",b/c);
}
printf("\n");
}
}
你让注释的地方,给你个图你就明白在模拟什么计算了。
c语言:不使用数组编写杨辉三角形10行的递归程序
//输出杨辉三角
# include stdio.h
void main()
{
int yang(int x, int y);
int i, j, k;
for(i = 1; i = 10; i++)//i控制行数
{
for(j = 0; j 10-i; j++)
printf(" ");
for(k = 1; k = i; k++)//y表示这一行中第几个数
printf("%4d", yang(i, k));
printf("\n");
}
}
int yang(int x, int y)
{
int z;
if(y == 1 || y == x) z = 1;
else z = yang(x-1, y-1) + yang(x-1, y);
return z;
}
不知道能不能满足lz要求。
c语言编程打印杨辉数字金字塔不用数组
#includestdio.h
#define N 10
void main()
{
unsigned int i,j,k;
unsigned int b,c;
for(i=0;iN;i++)
{
for(j=N;ji;j--)
printf(" ");
for(j=0;j=i;j++)
{
b=c=1;
if(j=1)
{
for(k=i-j+1;k=i;k++)
b*=k;
for(k=1;k=j;k++)
c*=k;
}
printf("%4d",b/c);
}
printf("\n");
}
}
在打印杨辉三角时通常用到杨辉三角的两个性质。
第一个就是杨辉三角中除了最外层的数为1外,其余的数都是它肩上两个数之和。用数组输出杨辉三角就用这个性质。
第二个性质是杨辉三角的第n行恰好是C(n,0)~C(n,n)。这里的C表示组合。不用数组输出杨辉三角就用这个性质。
哪里不明白可以Hi我。