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个数之和,这也是组合数的性质之一。

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

  • 相关阅读:
    OpenCvSharp 识别颜色
    树莓派 Raspberry Pi 4,.net core 3.0 ,Avalonia UI 开发
    iis频繁奔溃,分析dump
    prerender.io 搜索引擎优化 部署成windows服务 实现开机自动开启服务
    ionic3包还原使用yarn命令执行步骤(解决ionic3懒加载报找不到 module的错误)
    firebreath 在谷歌和火狐浏览器下的调试 以及打包
    ASP.NET Web API 2 对 CORS 的支持
    .net mvc通过ucenter和 discuz的整合,nopcommerce ucenter 插件的方式实现
    EF + Mysql
    Jenkins持续集成 & .NET
  • 原文地址:https://www.cnblogs.com/smuwgeg/p/9655785.html
Copyright © 2011-2022 走看看