如何使用for循环返回最小值?

时间:2017-03-31 21:27:30

标签: string for-loop limit

我有一个限制,我必须返回n的最小值才能使其成立:1 + 2 + 3 + 4 + ... + n> =限制。我觉得缺少一件事,但我不能说。

public int whenToReachLimit(int limit) {
 int sum = 0;

 for (int i = 1; sum < limit; i++) {
   sum = sum + i;
  }
 return sum;
}

输出结果为:
1:1
4:3
10:4

4 个答案:

答案 0 :(得分:1)

您可以使用以下方法避免循环计算 n 第一个整数的总和:

formula1

因此,不平等变为:

formula2

请注意,左侧为正(如果n为负,则总和为空)并严格增加。另请注意,您正在寻找满足不等式的第一个整数。这里的想法首先是用等式代替不等式,这将使我们能够求解 n 的等式。在第二步中,可能非整数解将更圆到最接近的整数。

formula3

解决 n 的这个等式应该给你两个解决方案。可以丢弃否定的一个(记住 n 是正数)。那就是:

formula4

最后,让我们将此解决方案舍入到也将满足不等式的最接近的整数:

formula5

注意:小输入可能会过度使用

答案 1 :(得分:0)

我不确定我是否确切知道你想做什么。但我建议你做一个&#34;练习&#34;。

If Limit = 0 the function returns 0
If Limit = 1 the function returns 1
If Limit = 2 the function return 3
If Limit = 3 the function return 3
If Limit = 4 the function return 6
If Limit = 5 the function return 6

现在您自己决定这些功能是否符合您的期望。

答案 2 :(得分:0)

你不想要求和,你想要返回n(满足给定要求的最小可能值)。

返回 i-1而不是sum

答案 3 :(得分:0)

我找到了答案。事实证明它不适用于我发现奇怪的polymer serve -o循环。但这是我自己的问题的答案。

for