我需要在任何行中找到第一个数字,如下所示:(http://puu.sh/rbVEJ/10a2086c82.png)。我只将它用于rowStart(6);但仅此而已。有人可以帮忙吗?

class ShelfRows{

  public static void main (String[] args){
    rowStart(6); // ans = 16
    rowStart(10); // ans = 46

}

  public static int rowStart(int row){
    int n = row - 1;
    if(n == 0) return 1;
    return n*2 + rowStart(n);

  }
}

最佳答案

行的起始编号是下面所有行的平方数。可以很容易地看出它们是三角形组织的。三角形占用的空间是矩形占用的空间的一半。您的示例的确切公式为:

public static int rowStart(int row){
  return (row * (row - 1))/2;
}
row - 1row是对角线正方形。与其“分割”(以创建合适的三角形),不如将正方形的row/2添加到平滑三角形。 (希望可以理解...)。

10-07 18:12