【问题标题】:Solving for N=N+1 Java algorithm [closed]求解 N=N+1 Java 算法 [关闭]
【发布时间】:2021-04-23 06:23:44
【问题描述】:

我有这个序列:8, 9, 11, 14, 18, 23, 29, 36, 44, ... 我必须编写一个根据这个规则计算 n 个数字并将它们输出到控制台的方法。第 n 个数字将被返回。 n 作为参数传递给方法。

如果 n = 3 作为参数传递,则输出为:8 9 11 并返回数字 11

我正在尝试创建一个代码,当我输入数字时,它会遵循此序列并按照该规则返回。例如,最后一个数字是 44,结果将是 53。我尽我所能,但我没有得到任何东西,所以我只是用 if's 做了这个,但我想知道你是否可以帮助我把它变成一个实用的自动执行此操作的代码。提前致谢

public class Zahlenfolge {
    public int berechneFolge(int n) {
        int num1 = 0;
        int z = 0;

        if (n == 8) {
            num1 = num1 + 1;
            z = n + num1;
        }
        if (n == 9) {
            num1 = num1 + 2;
            z = n + num1;
        }
        if (n == 11) {
            num1 = num1 + 3;
            z = n + num1;
        }
        if (n == 14) {
            num1 = num1 + 4;
            z = n + num1;
        }
        if (n == 18) {
            num1 = num1 + 5;
            z = n + num1;
        }
        if (n == 23) {
            num1 = num1 + 6;
            z = n + num1;
        }
        if (n == 29) {
            num1 = num1 + 7;
            z = n + num1;
        }
        if (n == 36) {
            num1 = num1 + 8;
            z = n + num1;
        }
        if (n == 44) {
            num1 = num1 + 9;
            z = n + num1;
        }
        return z;
    }
}

【问题讨论】:

  • 这里的for 循环会让您感到惊奇。

标签: java sequence numeric bluej


【解决方案1】:

公式为:1/2 (16 - n + n^2)

所以n = 31/2(16 - 3 + 3^2) = 1/2(13 + 9) = 1/2 * 22 = 11

只需在您的方法中使用这个公式,您就不需要任何循环和 if 语句。

如果你真的想要带循环的解决方案,你可以这样做:

public int berechneFolge(int n) {
   int value = 8;
   for(int i = 1; i < n; i++) {
      value += i;
   }
   return value;
}

【讨论】:

  • 我明白了,我的想法是错误的。现在更清楚了,谢谢!
【解决方案2】:

也许你可以考虑使用 for 循环:

class Zahlenfolge {
    public int berechneFolge(int n) {
        if (n <= 0) {
            throw new IllegalArgumentException("n must be positive");
        }
        int num = 8;
        for (int i = 1; i < n; i++) {
            System.out.println(num);
            num += i;
        }
        return num;
    }
}

class Main {
    public static void main(String[] args) {
        Zahlenfolge z = new Zahlenfolge();
        System.out.println(z.berechneFolge(3));
    }
}

输出:

8
9
11

【讨论】:

    【解决方案3】:

    我认为您应该先做一些研究(又名 Google)。即

    《java数列while循环代码示例》

    你应该看的是一个while循环,看看这篇文章:

    https://www.geeksforgeeks.org/java-while-loop-with-examples/

    编辑:我喜欢你的表达 Matt,但 OP 想将每个数字输出到控制台。

    【讨论】:

    • 是的,我会看看并感谢您的文章!
    【解决方案4】:

    如果你想使用 for 循环,这对你有用:

    int result = 8;
    
    if(n == 0) return 0;
    else{
      for(int i = 1; i < n; i++){
        result += i;
    return result;
      }
    }
    

    【讨论】:

      猜你喜欢
      • 2019-04-15
      • 2012-06-24
      • 2012-10-17
      • 2017-12-22
      • 2011-11-08
      • 2011-11-27
      • 2012-07-30
      • 2015-08-24
      • 2017-04-19
      相关资源
      最近更新 更多