我正在尝试编写一个函数,使用它可以以最少的步骤获得任何自然数。我可以从 1 开始添加或减去自然数。条件是:
一个号码只使用一次
您只能执行加法和减法。
不允许转义任何数字
找到具有最大值的整数的值以获得该数字。
例如:如果我想要的数字是 4 ,那么它会以 -1+2+ 3的形式获得,这里的答案是 3。以类似的方式,如果我想要 6 那么 1+2+ 3这里的答案是 3。对于10 = 1+2+3+ 4答案是4。
到目前为止我所拥有的:
到目前为止我所拥有的:
public void step() {
int n = (int)Math.sqrt(position * 2);
k = (position - (((n + 1) * n) / 2));
l = ((((n + 1) * (n + 2)) / 2) - position);
System.out.println(k + " " + l);
System.out.println(n);
p = (l > k ? k : l);
r = (l > k ? n : n + 1);
System.out.println(p + " " + r);
if (k == 0) {
result = n;
} else {
result = r + (2 * p);
} System.out.println("__________" + result + "__________");
}