本文目录一览:
1、C语言 杨辉三角代码(非数组)求解释
2、c语言:不使用数组编写杨辉三角形10行的递归程序
3、c语言编程打印杨辉数字金字塔不用数组
C语言 杨辉三角代码(非数组)求解释
#include<stdio.h>
#define N 15
void main()
{
int i,j,k;
long long b,c; // 下面的乘法计算的时候如果N大了,会超过int的最大值,改为long long
for(i=0; i<N; 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语言编程打印杨辉数字金字塔不用数组
#include<stdio.h>
#define N 10
void main()
{
unsigned int i, j, k;
unsigned int b, c;
for(i = 0; i < N; i++)
{
for(j = N; j > i; 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我。