zoukankan      html  css  js  c++  java
  • 多维数组打印杨晖三角

    根据用户输入的一个行数,然后打印出杨晖三角。

    这里,我是想用数组打印出杨晖三角。首先,附上我的完整代码:

     1 let readline = require('readline-sync'); // 引包
     2 console.log('请输入杨晖三角的行数:');
     3 let line = ~~readline.question('');
     4 let arr = [], str = '';
     5 for (let i = 0; i < line; i++) {
     6     for (let j = 0; j < line - i - 1; j++) {
     7         str += ' ';
     8     }
     9     // 求出多维数组里面的每个数组
    10     for (let i = 0; i < line; i++) {
    11         arr[i] = new Array(i + 1);
    12         for (let j = 0; j <= i; j++) {
    13             if (j == 0 || j == i) {
    14                 arr[i][j] = 1;
    15             } else {
    16                 arr[i][j] = arr[i - 1][j - 1] + arr[i - 1][j];
    17             }
    18         }
    19     }
    20     console.log(`${str + arr[i]}`)
    21     str = '';
    22     arr = [];
    23 }

    打印杨晖三角,花费了我不少时间,可能是对多维数组理解的还不够透彻。来解释一下我的代码吧。

    首先,是先求出多维数组里面的每个小数组的。这一步是可以求出最大的数组的所有项。这里我并没有将arr.join(''),原因是我后面会定义一个空字符串:str,来拼接空格和数组里面的每个数组。附上我的代码,如下:

    // 求出多维数组里面的每个数组
        for (let i = 0; i < line; i++) {
            arr[i] = new Array(i + 1);
            for (let j = 0; j <= i; j++) {
                if (j == 0 || j == i) {
                    arr[i][j] = 1;
                } else {
                    arr[i][j] = arr[i - 1][j - 1] + arr[i - 1][j];
                }
            }
        }
    console.log(arr);

    其次,我再在多维数组的外面加了一层for循环,来确定打印的次数。如下:

    for (let i = 0; i < line; i++) {
    // 里面是多维数组
    }

    然后确定了循环打印的次数,然后我将进行空格的连接,这里我定义了str空字符串,然后每当循环一次的时候,要清空这个字符串。如下:

    for (let i = 0; i < line; i++) {
        for (let j = 0; j < line - i - 1; j++) {
            str += ' ';
        }
        // 多维数组
        console.log(`${str + arr[i]}`);
        str = '';
        arr = [];
    }

    以上,利用多维数组便将杨晖三角的效果打印出来了。

    • 利用的主要的杨晖三角的规律:

    每个数字等于上一行的左右两个数字之和。可用此性质写出整个杨辉三角。即第line+1行的第i个数等于第line行的第i-1个数和第i个数之和,这也是组合数的性质之一。

    当然,杨晖三角还有其他性质,我并没有进行深入的研究。如果有其他想法,希望留言一起探讨。

  • 相关阅读:
    WPF-触发器
    WPF使用socket实现简单聊天软件
    git常用命令备忘
    (转载)WPF中的动画——(一)基本概念
    WPF中的依赖项属性
    C#中的索引器
    C#中的装箱拆箱
    编程语言的弱类型、强类型、动态类型、静态类型
    WPF中的数据驱动
    WPF中的命令简介
  • 原文地址:https://www.cnblogs.com/smuwgeg/p/9655785.html
Copyright © 2011-2022 走看看