我需要在任何行中找到第一个数字,如下所示:(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);
}
}
答案 0 :(得分:1)
行起始编号是下面所有行中正方形的计数。人们可以很容易地发现它们是以三角形组织的。三角形占据的空间是矩形占据的空间的一半。您的示例的确切公式为:
public static int rowStart(int row){
return (row * (row - 1))/2;
}
row - 1
vs row
是对角线方块的考虑因素。他们不是“分裂”(创建一个合适的三角形),而是将平方三角形的row/2
加到正方形上。 (希望可以理解......)。
答案 1 :(得分:0)
了解三元数字。
$cookie