我是一个非常基础的 java 用户。我正在为这门课做这件事,并且我已经编写了整个程序,但我终其一生都无法弄清楚获得所需输出所需的算法,所以我想知道是否有任何 Java 或 Math大师们可以帮助像我这样的普通人摆脱困境。明天交作业,这是最后一个问题。感谢您的帮助。
这是我的主要方法中的代码,其中注释了所需的输出,后面是序列 2 方法。
for(int i = 0; i < 10; i++) {
System.out.print(sequence2(i) + " "); // 1, 2, 4, 5, 7, 8, 10, 11, 13, 14
}
public static int sequence2(int n) {
if(n == 0)
return 1;
if(n == 1)
return 2;
if(n == 2)
return 4;
if(n == 3)
return 5;
return sequence(n-3) + sequence(n-3);}
我不确定这是我的基础问题,还是我在底部的计算问题。非常感谢任何帮助!
最佳答案
更新
因为它必须是一个递归方法,所以这样做:
public static int sequence2(int n) {
return (n <= 1 ? n + 1 : 3 + sequence2(n - 2));
}
原始答案
这样做就可以了:
public static int sequence2(int n) {
return n / 2 * 3 + n % 2 + 1;
}
输出
1 2 4 5 7 8 10 11 13 14
要查看它是如何加起来的,这里是中间值:
n 0 1 2 3 4 5 6 7 8 9
-----------------------------------------------------
n / 2 0 0 1 1 2 2 3 3 4 4
n / 2 * 3 0 0 3 3 6 6 9 9 12 12
n % 2 0 1 0 1 0 1 0 1 0 1
1 1 1 1 1 1 1 1 1 1 1
=====================================================
result 1 2 4 5 7 8 10 11 13 14
关于java - 关于基数或算法的问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43907157/