首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Pascal三角JS格式

Pascal三角JS格式
EN

Code Review用户
提问于 2019-05-07 02:40:18
回答 1查看 162关注 0票数 3

对于我的代码,直到第5行,我的三角形的格式很好。但是一旦我到达第六行,格式就变得有趣了,因为我开始有两位数。有办法解决这个问题吗?

我的代码也是优化的吗?有什么办法可以让它更好吗?

谢谢!

代码语言:javascript
复制
function pascals(num) {
  var result = [[1],[1,1]];

  if (num === 0) {
    console.log(0);
  }

  if (num === 1) {
    console.log(1);
  }

  else {
    for (var i = 2; i < num; i++) {
      result[i] = [];
      result[i][0] = 1;

      for (var j = 1; j < i; j++) {

        result[i][j] = result[i - 1][j - 1] + result[i - 1][j];
      }
      result[i][j] = 1
    }
  }
  for (var i = 0; i < result.length; i++) {
    console.log(' '.repeat(result.length - i) + result[i]);
  }
}

pascals(6)
代码语言:javascript
复制
      1
     1,1
    1,2,1
   1,3,3,1
  1,4,6,4,1
 1,5,10,10,5,1
EN

回答 1

Code Review用户

发布于 2019-05-07 04:28:58

数位数就是把它扔出去的原因。我通常通过选择找到最高的数字,然后适当地抵消其余的数字来解决这个问题。我在用多项式三角形乱搞的时候就这么做了。

修复间距问题

首先,我得到了最长的可能的数字,然后在前面加上空格,以使其正确排列。

最近,您必须修复预追加,以便它看起来比大小2更好。这是在一个相当奇怪的算法上完成的。

至于其余的代码,我没有时间看它,但稍后会。

固定结构

总的来说,您的代码看起来相当不错。这里有一些建议。

我继续前进,并将pascal数组生成转移到另一个函数。函数的思想是它执行一项任务。逻辑上,将这些任务分解为多个函数,限制了每个函数的大小,增加了可读性。在这里,我们可以将它赋值给pascal函数中的一个变量。我使用了直观的名称generatePascalArrays,因此您可以从变量赋值中获得函数所做的操作的要点。

其次,我注意到您将1和0的异常情况分开,我将其合并为一个ifconsole.log(num)

此外,我确实使用了一些箭头函数。在其他语言中,您可能听说过它们是lambda函数。如果你不熟悉他们,这里有一个链接

代码语言:javascript
复制
function generatePascalArrays(num) {
  var result = [[1],[1,1]];
  for (var i = 2; i < num; i++) {
    result[i] = [];
    result[i][0] = 1;
    for (var j = 1; j < i; j++) {
      result[i][j] = result[i - 1][j - 1] + result[i - 1][j];
    }
    result[i][j] = 1;
  }
  return result;
}

function pascals(num) {  
  if (num <= 1) {
    console.log(num);
  }
  var result = generatePascalArrays(num),  
      width = Math.max(...result[result.length-1]).toString().length;  
  for (var i = 0; i < result.length; i++) {
	let preOffsetter = result[result.length-i-1].length * Math.floor(width/3) + result.length - i
	console.log(' '.repeat(preOffsetter) + result[i].map((x) => ' '.repeat(width - x.toString().length) + x));
  }
}

pascals(5)
pascals(6)
pascals(10)
票数 2
EN
页面原文内容由Code Review提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://codereview.stackexchange.com/questions/219841

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档