我需要在任何行中找到第一个数字,如下所示:(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 - 1
与row
是对角线正方形。与其“分割”(以创建合适的三角形),不如将正方形的row/2
添加到平滑三角形。 (希望可以理解...)。