什么是杨辉三角(帕斯卡三角):

数学之美:杨辉三角(帕斯卡三角)的奇特性质
百度百科

实现思路

根据上一行计算下一行,需要实现

type calculateNext = (row: number[]) => number[]

传入行、列,返回相应的数字

type getPoint = (n: number, column: number) => number

把整个数据存到实例成员中,下次获取某点数据不需要再从第一行算

具体实现

type data = number[][];export default class PascalTriangleService {protected data: data = [[1]];protected calculateNext(row: number[]): void {const result: number[] = [];// console.log("row", row);// 因为每一行数据都是对称的,算到一半就可以if (row.length % 2 !== 0) {// 下一行是偶数行算到for (let i = 0; i <= (row.length - 1) / 2; i++) {result.push(row[i] + (row[i - 1] || 0));}for (let j = result.length - 1; j >= 0; j--) {result.push(result[j]);}} else {// 下一行是奇数行算到for (let i = 0; i <= row.length / 2; i++) {result.push(row[i] + (row[i - 1] || 0));}for (let j = result.length - 2; j >= 0; j--) {result.push(result[j]);}}// console.log("result", result);this.data.push(result);}protected calculateNext2(row: number[]): void {const result: number[] = [];// 不判断奇偶行,每一行后半部分的数据都是算出来的for (let i = 0; i <= row.length; i++) {result.push((row[i] || 0) + (row[i - 1] || 0));}// console.log("result", result);this.data.push(result);}getPoint(n: number, column: number): number {if (n < column) {throw new Error("列数输入有误");}// 判断是否已经计算过了if (this.data.length < n) {// 根据this.data最后一行数据不断计算下一行数据,直到到达第n行for (let i = this.data.length; i < n; i++) {this.calculateNext(this.data[this.data.length - 1]);}// console.log(this.data);return this.data[n - 1][column - 1];} else {return this.data[n - 1][column - 1];}}getData(): data {return JSON.parse(JSON.stringify(this.data));}
}

实现思路2

我们可以使用阶乘计算,比如第6行是[1, 5, 10, 10, 5, 1],第6行第3列是C(5,2) = 5!/(2!·3!) = (3×4×5)/(1×2×3) = 10

具体实现2

function getPoint2(n: number, column: number): number {if (n < column) {throw new Error("列数输入有误");}const indexN = n - 1;const indexC = column - 1;let numerator = 1;for (let i = indexC + 1; i <= indexN; i++) {numerator = numerator * i;}let denominator = 1;for (let j = 1; j <= indexN - indexC; j++) {denominator = denominator * j;}return numerator / denominator;
}

控制台打印

const service = new PascalTriangleService();
console.log(service.getPoint(7, 3));
console.log(service.getData());
console.log(getPoint2(7, 3));
    15[[ 1 ],[ 1, 1 ],[ 1, 2, 1 ],[ 1, 3, 3, 1 ],[ 1, 4, 6, 4, 1 ],[ 1, 5, 10, 10, 5, 1 ],[ 1, 6, 15, 20, 15, 6, 1 ]]15

js算法:杨辉三角(帕斯卡三角)相关推荐

  1. 帕斯卡三角形html,数学之美:杨辉三角(帕斯卡三角)的奇特性质

    杨辉三角(也称帕斯卡三角)相信很多人都不陌生,它是一个无限对称的数字金字塔,从顶部的单个1开始,下面一行中的每个数字都是上面两个数字的和. 杨辉三角,是二项式系数在三角形中的一种几何排列,在中国南宋数 ...

  2. 数学之美:杨辉三角(帕斯卡三角)的奇特性质

    杨辉三角(也称帕斯卡三角)相信很多人都不陌生,它是一个无限对称的数字金字塔,从顶部的单个1开始,下面一行中的每个数字都是上面两个数字的和. 杨辉三角,是二项式系数在三角形中的一种几何排列,在中国南宋数 ...

  3. python创建和显示任意行数的杨辉三角/帕斯卡三角(函数)

    def create_psc_triangle(line_num):"""创建杨辉三角(帕斯卡三角):param line_num: 行数:return: 存储杨辉三角的 ...

  4. 杨辉三角/帕斯卡三角

    杨辉三角,又叫帕斯卡三角形,是一个三角形矩阵,其顶端是 1,视为(row0).第1列(row1)(1&1)两个1,这两个1是由他们上头左右两数之和 (不在三角形内的数视为0).依此类推产生第2 ...

  5. 【每日一算法】杨辉三角 II

    每日一算法-杨辉三角 II 题目 给定一个非负索引 k,其中 k ≤ 33,返回杨辉三角的第 k 行. 在杨辉三角中,每个数是它左上方和右上方的数的和. 示例: 输入: 3 输出: [1,3,3,1] ...

  6. 【每日一算法】杨辉三角到底是什么?

    每日一算法-杨辉三角 题目 给定一个非负整数 numRows,生成杨辉三角的前 numRows 行. 在杨辉三角中,每个数是它左上方和右上方的数的和. 示例: 输入: 5 输出:[     [1], ...

  7. python杨辉三角居中_python打印杨辉三角的两种方法及详解

    艾斯压阵 1c950a7b02087bf4200394cdf1d3572c11dfcf23.jpg 一盏灯, 一片昏黄: 一简书, 一杯淡茶. 守着那一份淡定, 品读属于自己的寂寞. 保持淡定, 才能 ...

  8. python写等腰三角形的性质_杨辉三角—知识点详解 - osc_8cfq8uoa的个人空间 - OSCHINA - 中文开源技术交流社区...

    杨辉三角 杨辉三角(欧洲叫帕斯卡三角)是一个很奇妙的东西,它是我国数学家杨辉在1261年发现的,欧洲的帕斯卡于1654年发现,比我国的巨佬数学家杨辉晚了393年.(在此show一下我的爱国情怀) 铺垫 ...

  9. js算法集合(二) javascript实现斐波那契数列 (兔子数列) Javascript实现杨辉三角...

    js算法集合(二)  斐波那契数列.杨辉三角 ★ 上一次我跟大家分享一下做水仙花数的算法的思路,并对其扩展到自幂数的算法,这次,我们来对斐波那契数列和杨辉三角进行研究,来加深对Javascript的理 ...

最新文章

  1. python操作Excel的几种方式
  2. 【10】48. Rotate Image
  3. Win8Metro(C#)数字图像处理--2.31灰度拉伸算法
  4. 来谈谈Spring构造函数注入的循环依赖问题
  5. mysql---存储过程和函数
  6. sparkstreaming消费receive
  7. MySQL 高阶语句
  8. proteus8找不到isis
  9. SQL 字符串去除空格函数
  10. Mac QQ聊天记录迁移方法(Mac to Mac)
  11. python之parser.add_argument()输入是什么!!
  12. python 爬取拉钩招聘数据
  13. 中望CAD的lisp编辑器_中望CAD 2020中文版
  14. matlab中load函数是什么意思,MATLAB中load函数的用法
  15. 7、Spring MVC 之 处理异步请求
  16. correl函数相关系数大小意义_用Correl函数返回相关系数,以确定属性关系 Excel用Correl函数返回相关系数以确...
  17. HTML简笔画画布气球,一束气球简笔画图片
  18. python量化选股策略_牛刀小试-小市值选股策略
  19. 要装修,找小米!联手宜家,小米要用AIoT攻占你的家居生活!
  20. HTML表格标签,真香

热门文章

  1. 游戏设计模式之状态机
  2. 基于微信小程序的大学选修课考勤签到系统设计
  3. phpexel tp5 导出_Tp5.1使用导出Excel
  4. 计算机应用老师优点,多媒体教学的优点与缺点
  5. [记录]英国][记录/历史/战争][第一次世界大战全记录(全10集)][DVD-AVI/7.27G][英语外挂中英双字
  6. 首创证券分析报告(0608)
  7. 【转载】多屏互动技术研究之WifiDisplay(Miracast)技术原理及实现
  8. 图片添加水印文字方法 图片批量添加水印教程
  9. 笔记本风扇噪音大的处理办法
  10. 踩坑系列之解决ubuntu输入密码界面系统键盘鼠标失灵