问题描述
我有这个序列:8,9,11,14,18,23,29,36,44,... 我必须编写一个方法,根据这个规则计算 n 个数字并将它们输出到控制台。将返回第 n 个数字。 n 作为参数传递给方法。
如果 n = 3 作为参数传递,输出将是:8 9 11 并返回数字 11
我正在尝试创建一个代码,当我输入数字时,它会遵循此序列并按照该规则将其返回。比如最后一个数字是 44,结果是 53。我尝试了我能做的,但我什么也没做,所以我只是用 if 做了这个,但我想知道你是否能帮我把它变成一个实用的自动执行此操作的代码。提前致谢
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;
}
}
解决方法
公式为:1/2 (16 - n + n^2)
所以 n = 3
是 1/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;
}
,
也许你可以考虑使用 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
,
我认为你应该先做一些研究(也就是谷歌)。即
“java 数字序列 while 循环代码示例”
你应该看的是一个while循环,看看这篇文章:
https://www.geeksforgeeks.org/java-while-loop-with-examples/
编辑:我喜欢你的表达 Matt,但 OP 想将每个数字输出到控制台。
,如果你想使用 for 循环,这对你有用:
int result = 8;
if(n == 0) return 0;
else{
for(int i = 1; i < n; i++){
result += i;
return result;
}
}