java - 计算一个数字与自身相加多少次直到达到任意值?

标签 java

考虑两个变量:

“n”是任意值。

“i”是某个值在达到“n”值之前在总和中增加的次数。

例如,如果选择值 n = 344,则 i = 26,因为:

26 + 25 + 24 + ... + 3 + 2 + 1 = 351

26 是变量“i”在等于 n = 344 或第一次超过之前按降序添加的次数。

public class Trstuff{
    public static void main (String [] arg) {
        int n = 4;
        int i = computeIndex(n);
        System.out.print(i);
    }
    public static int computeIndex(int n) {
        int i = 1;
        int sum = 0;
        for(i = 1; sum <= n; i++) {
            sum = sum + i;
        }
        return i;
    }
}

我的目标是选择任意“n”值,然后让程序将变量“i”返回给我。

就我的程序而言,我认为它应该是正确的,但不知何故它不是。这是 n = 4 的示例。

结果应该是“i = 3”,因为:

1 + 2 = 3

1 + 2 + 3 = 6

因此,由于循环中的表达式“sum <= n”,循环中“i”的升序值在循环应该停止之前被添加了 3 次。

但是,当我运行该程序时,它返回值 4。我根本不明白出了什么问题,为什么我的程序给了我 4 而不是正确答案 3?

最佳答案

读取for循环如下:

for every value of i while sum smaller or equal to n, add i to sum and increment i

和增量i的最后部分在sum + i之和之后执行,但在检查sum是否小于或等于的下一个检查之前执行n,结果 i 总是比预期大 1。

解决方案可能是使用不同的导出(存在不同的解决方案):

public static int computeIndex(int n) {
    int i = 1;
    int sum = 0;
    while true {
        sum = sum + i;
        if sum<n {
          i++;
        } else break;
    }
    return i;
}

关于java - 计算一个数字与自身相加多少次直到达到任意值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52960564/

相关文章:

java - 独立 Java 应用程序是否有 "best"或最流行的数据库?

java - 如何删除数组中元素值的第一个实例?

c# - 在 C# 或 Java 中使用的 C++ DLL

java - fragment 不显示在线性布局的框架布局中

java - JAXB 给我 : java. lang.IllegalArgumentException: is parameter must not be null

java - 方法注释和默认访问级别的奇怪行为

java - 如何将 Spring SAML 代码与 jks 或签名元数据结合使用

java - 为什么正则表达式 =""(空模式)在每个字符位置都匹配?

java - 如何在Spring WebClient中拦截http流量?

java - Java 中的异常重铸错误消息