[Codewars]-Pascals Triangle
题目:
就是杨辉三角 让你输出三角形的全部元素, 以数组的方式
思路:
既然杨辉三角的下一列, 除了左右两元素是 1 之外, 中间元素是根据上一列得来的 我们模仿这个思路就行了
解答:
- function pascalsTriangle(n) {
- //return a flat array representing the values of Pascal's Triangle to the n-th level
- var cur = [1,1]
- var result = [1,1,1]
- if(n==1){return [1]}
- if(n==2){return result}
- for(var i = 2 ; i < n ; i ++){
- var next = [1]
- for(var j = 0 ; j < cur.length-1 ; j ++){
- next.push(cur[j]+cur[j+1])
- }
- next.push(1)
- cur = next;
- result = result.concat(next)
- }
- return result
- }
codewar 的优秀答案:
递归方法, 研究下元素和下标的关系可做出来 from:tjwudi, matrixorz, Ulisses
- function pascalsTriangle(n) {
- if (n === 1) {
- return [1];
- }
- var prev = pascalsTriangle(n - 1),
- len = prev.length;
- prev.push(1);
- for (var i = len - n + 1; i < len - 1; i++) {
- prev.push(prev[i] + prev[i + 1]);
- }
- prev.push(1);
- return prev;
- }
来源: https://www.2cto.com/kf/201803/732560.html