网站首页 > 技术文章 正文
一、前几节课一直都是复制粘贴的方式在 console 中运行程序,在程序改来改去的时候,复制过来复制过去挺麻烦的,今天玩这个改动会比较多,所以咱们换种方式,把 javaScript 代码写到 html 中,直接在浏览器打开,然后改完程序,刷新就行了。
1、打开 vscode ,File -> New File.
2、将文档类型设置成 html
3、打个感叹号,并按 Tab 键
会自动生成一个简单的html模板
4、然后在 <body></body> 之前加上 以下内容,并保存到桌面,命名为“杨辉三角.html”:
5、找到桌面上的“杨辉三角”,用鼠标右键->打开方式-> Google Chrome
会弹出 chrome 浏览器,并在页面上显示一个1就对了
然后,我们切回到 vscode 把 document.write(1) 改成 document.write(2)并 control + s 保存;
再倒回来浏览器刷新一下看看会发现,页面上已经变成2了。
二、先了解一下,什么是杨辉三角
1、第一行是一个1;
2、第二行开始,每行的行首和行尾都是1
3、从第三行开始看出规律来了,中间的2就是第二行的两个1的和
4、从第四行来看,第2个数字“3”是第三行的第1和第2个数的和,第3个数字“3”,是第三行的第2和第3个数字的和。
规律找到了,我们开始来写程序吧。
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
</head>
<body>
<script>
/*
杨辉三角就是下面这么一个东西:
1
1 1
1 2 1
1 3 3 1
1 4 6 4 1
======================
1、第一行是一个1;
2、第二行开始,每行的行首和行尾都是1
3、从第三行开始看出规律来了,中间的2就是第二行的两个1的和
4、从第四行来看,第2个数字“3”是第三行的第1和第2个数的和,第3个数字“3”,是第三行的第2和第3个数字的和。
规律找到了,我们开始来写程序吧。
*/
function ShowYangHuiTriangle(n) { //n 表示行数
//因为前一行结果会影响后一行,所以打印后一行的时候,要知道前一行是啥,而前一行的空格数,又和后一行相关
//所以我们还是先把数据生成了再来打印吧
var data = []; //java script 不能直接定义二维数组,只能先定义一个一维数组,再往二维数组里插数组
//第1行:data[0] = [1]
//第2行:data[1] = [1,1]
//第3行:data[2] = [1,2,1]
//第4行: data[3] = [1,3,3,1]
//第5行: data[4] = [1,4,6,4,1]
//第一行虽然就只有一个数字,但它也应该是个数组
data.push([1]);
//从第二行开始,到第 n 行,这种带得有(从 xxx 到 xxx 的,一般就是 for 循环了)
//这里要注意,数组的下标是从 0 开始的
//假如: data = [1,2,3,4,5] 数组
//那么 data[0] = 1; data[1] = 2; data[2] = 3; data[3] = 4; data[4] = 5;
//所以从第 2 行到 第 n 行,应该是 1 <= row < n
for (var r=1;r<n; r++) { //r 表示当前是第几行
var row = []; //生成新行
row.push(1); //数组的 push 方法是往数组中按顺序添加元素,这里表示每行的行首都是1
//第一行是一个元素,第二行是两个元素,第三行是三个元素,所以第 r 行
//就是 r 个元素,但需要注意的是,这里的 r 是行标
//第一行的时候 r = 0, 第二行的时候,r = 1, 第 n 行的时候 r = n - 1;
//下标为r的行,它是第 r+1 行,它的元素范围是从 0 < 元素个数 < r + 1; //每行的全部元素
//还要去掉行首和行尾所以需要计算的范围就是 1 < 元素个数 < r //去掉了行首和行尾的全部元素
for (var c=1;c<r;c++) {
row.push(data[r-1][c-1] + data[r-1][c]);
//data[r] 是当前行所以 data[r-1] 是前一行
//当前行的第2个元素 = 前一行的第1个元素 + 前一行的第2个元素
//举例:第3行的第2个数字, data[2][1] = 2 ,它等于 第2行的第1个数字和第2个数字和 = data[1][0] + data[1][1]
}
row.push(1); //这里表示每行的行尾也是1
data.push(row); //把新行加入到 data 中
}
//打印所有行
for (var r in data) { //r 为当前行数
//每一行的空格数 = n - r 当前行数
for(var c=0;c<n-r;c++) document.write(" ");
document.write(data[r].join(" ")); //每一行的所有数字用空格格开
document.write("\n"); //打完一行要换行
}
}
document.write("<pre>"); //保持原样打印开始
ShowYangHuiTriangle(5); // 我们希望想打几行就打几行
document.write("</pre>"); //保持原样打印结束
</script>
</body>
</html>
当行数很多的时候,格式会乱,比如说打印10行
猜你喜欢
- 2024-09-15 用css实现三角形、聊天对话框(css如何实现三角形)
- 2024-09-15 CSS 标准中加入一批新函数(css 标准中加入一批新函数怎么写)
- 2024-09-15 软网推荐:快速有效管理系统音量(音量管理器快捷键)
- 2024-09-15 参宿四未爆,“末日彗星”已近?(参宿四要爆炸了吗)
- 2024-09-15 JDK的安装与配置(jdk配置环境详细步骤)
- 2024-09-15 Web Essentials之样式表StyleSheets
- 2024-09-15 Excel里最常见的几个关于序号的问题
- 2024-09-15 又是一款神作 3DM汉化组制作《三角符文》完整汉化下载
- 2024-09-15 CSS中的三角形(css如何实现三角形)
- 2024-09-15 CSS奇思妙想—这里是CSS创造的世界
- 1512℃桌面软件开发新体验!用 Blazor Hybrid 打造简洁高效的视频处理工具
- 556℃Dify工具使用全场景:dify-sandbox沙盒的原理(源码篇·第2期)
- 504℃MySQL service启动脚本浅析(r12笔记第59天)
- 482℃服务器异常重启,导致mysql启动失败,问题解决过程记录
- 480℃启用MySQL查询缓存(mysql8.0查询缓存)
- 460℃「赵强老师」MySQL的闪回(赵强iso是哪个大学毕业的)
- 440℃mysql服务怎么启动和关闭?(mysql服务怎么启动和关闭)
- 438℃MySQL server PID file could not be found!失败
- 最近发表
- 标签列表
-
- c++中::是什么意思 (83)
- 标签用于 (65)
- 主键只能有一个吗 (66)
- c#console.writeline不显示 (75)
- pythoncase语句 (81)
- es6includes (73)
- windowsscripthost (67)
- apt-getinstall-y (86)
- node_modules怎么生成 (76)
- c++int转char (75)
- static函数和普通函数 (76)
- el-date-picker开始日期早于结束日期 (70)
- js判断是否是json字符串 (67)
- checkout-b (67)
- c语言min函数头文件 (68)
- asynccallback (71)
- localstorage.removeitem (74)
- vector线程安全吗 (70)
- & (66)
- java (73)
- js数组插入 (83)
- mac安装java (72)
- eacces (67)
- 查看mysql是否启动 (70)
- 无效的列索引 (74)