c语言杨辉三角不用数组,C语言杨辉三角数组

发布时间:2023-01-08

本文目录一览:

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我。