如何找到给定行中的最小数字?

时间:2016-09-15 09:42:14

标签: math recursion conditional

我需要在任何行中找到第一个数字,如下所示:(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);

  }
}

2 个答案:

答案 0 :(得分:1)

行起始编号是下面所有行中正方形的计数。人们可以很容易地发现它们是以三角形组织的。三角形占据的空间是矩形占据的空间的一半。您的示例的确切公式为:

public static int rowStart(int row){
  return (row * (row - 1))/2;
}

row - 1 vs row是对角线方块的考虑因素。他们不是“分裂”(创建一个合适的三角形),而是将平方三角形的row/2加到正方形上。 (希望可以理解......)。

答案 1 :(得分:0)

了解三元数字。

$cookie