在杨辉三角中,从第二行开始每个数都等于其正上方和左上方数之和
1 需要注意,每一行中,行数和其值数相等
1 1 第一行:有一个值
1 2 1 第二行:有二个值
1 3 3 1 第三行:三个值
1 4 6 4 1 ...
...
前置知识
-
数组的使用(数组之中还有数组)
let arr = [[1]]这个表示声名一个数组,其中有一个值,这个值也是数组如果想在arr中的数组中添加一个值呢。也就是对
arr[ 0 ]中的值[ 1 ]再加一个值可以
arr[ 0 ][ 2 ]就添加成功了 结果为
[[1,2]] -
|| 布尔运算符(逻辑运算符)'或' 的使用
false || 0// 0fale || 5// 5
function sanjiao (n) {
let arr = [[1]] //先写出第一行和其值
for(let i = 1; i<n; i++) {
arr[i] = [] //解决行数问题,输入2,会打印2行;输入3会打印3行...
for(let j = 0; j<i+1;j++) { //解决行数和值数相等
arr[i][j] = (arr[i-1][j] || 0) + (arr[i-1][j-1] || 0) //解决其值,计算的问题
}
}
returen arr
}
console.log(sanjiao(4)) //调用函数,并打印
需要思考:
1. 用函数方式解决
2. 为什么第一个for循环中的i<n ?
3. 为什么第二个for循环中j=0; j<i+1 ?
4. 对于其值,计算的写法