输出杨辉三角

    技术2023-09-21  102

    1 1 1 1 2 1 1 3 3 1 1 4 6 4 1

    根据它的性质,每行行首是1,每行行尾也是1,除此外其余数都为其上一列的数加上上一列的数的前面那个数。可以写出程序。

    #include <stdio.h> int main(void) { int n = 0; printf("请输入你想输入的行数\n"); scanf("%d", &n); int array[n][n]; for (int i = 0; i < n; i++) array[i][0] = array[i][i] = 1;//行首行尾为1 for (int i = 2; i < n; i++) for (int j = 1; j < i; j++)//j(列数)不能大于i(行数) array[i][j] = array[i - 1][j - 1] + array[i - 1][j];//求和 for (int i = 0; i < n; i++)//打印 { for (int j = 0; j <= i; j++) printf("%4d", array[i][j]); printf("\n"); } return 0; }

    可以根据公式来算,看下面的 C n 1 = C n n − 1 = 1 C^1_n = C^{n-1}_ n= 1 Cn1=Cnn1=1

    C 2 1 = 2 C^1_2 = 2 C21=2

    C 3 1 = 3 C^1_3 = 3 C31=3

    C 4 2 = 6 C^2_4 = 6 C42=6 C n r = A n r r ! = n ! r ! ( n − r ) ! C^r_n = {\frac {A^r_n} {r!}}={\frac{n!} {r!(n-r)!}} Cnr=r!Anr=r!(nr)!n! 下标正好是行数,上标正好是列数,结果也相同。

    #include <stdio.h> float C(int n, int r); float Actorial(int n); int main(void) { int n = 0; printf("请输入你想输入的行数\n"); scanf("%d", &n); int array[n][n]; for (int i = 0; i < n; i++) { for (int j = 0; j <= i; j++) printf("%4.0f", C(i, j)); printf("\n"); } return 0; } float C(int n, int r) { return Actorial(n) / (Actorial(r) * Actorial(n - r)); } float Actorial(int n) { float sum = 1; for (int i = 1; i <= n; i++) sum = (float)(sum * i); return sum; }

    也可以不用函数 C n k = n ∗ ( n − 1 ) ∗ ( n − 2 ) ∗ ( n − 3 ) ∗ … … ∗ ( n − k + 1 ) 1 ∗ 2 ∗ 3 ∗ 4 ∗ … … ∗ k C^k_n={\frac{n*(n - 1)*(n-2)*(n-3)*……*(n - k +1)}{1*2*3*4*……*k}} Cnk=1234kn(n1)(n2)(n3)(nk+1)

    #include <stdio.h> float C(int n, int r); float Actorial(int n); int main(void) { int n = 0; printf("请输入你想输入的行数\n"); scanf("%d", &n); int array[n][n]; for (int i = 0; i < n; i++) { for (int j = 0; j <= i; j++) { int sum = 1; for (int k = 1; k <= j; k++) { sum = sum * (i - k + 1) / k; } printf("%3d", sum); } printf("\n"); } return 0; }

    java第一种方法实现

    import java.util.Scanner; public class Array { public static void main(String[] args) { Scanner in = new Scanner(System.in); int length = in.nextInt(); int[][] array = new int[length][]; for (int i = 0; i < array.length; i++) { array[i] = new int[i + 1]; array[i][i] = array[i][0] = 1; for (int j = 1; j < array[i].length - 1; j++) { array[i][j] = array[i - 1][j] + array[i - 1][j - 1]; } } for (int row[] : array) { for (int odd : row) { System.out.printf("%4d", odd); } System.out.println(); } } }
    Processed: 0.008, SQL: 9