这是我的代码:
System.out.println("Enter upper limit of range");
long u = in.nextLong(), x = 0, y = 1, z = x+y;
System.out.println("Fibonacci Series till " + u + " -");
System.out.print(x + " " + y + " " + z + " ");
while (z < u) {
x = y;
y = z;
z = x + y;
System.out.print(z + " ");
}
我想跳过最后一次迭代,以便最后一次输出数量不会超出限制。
例如,如果我将u
的值初始化为25
,那么它也会打印超出限制的34
。跳过最后一次迭代不会显示数字34
。
答案 0 :(得分:4)
在将z
增加到Fibonacci序列中的下一个数字之前,只需打印:
while (z < u) {
System.out.print(z+" ");
x = y;
y = z;
z = x + y;
}
通过此更改,最终迭代仍然会导致z
前进到一个太高的值,并且在下一次迭代时会失败,但您不会打印此数字。
此重构还会解决您遇到的另一个问题,即不在Fibonacci序列中打印第一个数字。通过在推进数字后放置打印语句,z
的初始值将永远不会被打印。
答案 1 :(得分:0)
怎么样:
while(z<u)
{
x=y;
y=z;
z=x+y;
if (z < u) {
System.out.print(z+" ");
}
}
这是最简单的解决方案,假设我的问题是正确的......
答案 2 :(得分:0)
while (...) {
...
...
if (condition){
continue; // which skips to the following iteration
// or
// break; // which just stops the loop from iterating
}
所以你的情况可能是z<u
或者您可以将打印本身放在if子句中
答案 3 :(得分:0)
首先打印当前值,然后更新z。
System.out.println("Enter upper limit of range");
long u=in.nextLong(),x=0,y=1,z=x+y;
System.out.println("Fibonacci Series till "+u+" -");
System.out.print(x+" "+y+" ");
while(z<u)
{
System.out.print(z+" ");
x=y;
y=z;
z=x+y;
}
答案 4 :(得分:0)
System.out.println("Enter upper limit of range");
long u = in.nextLong(), x = 0, y = 1, z = x+y;
System.out.println("Fibonacci Series till " + u + " -");
System.out.print(x + " " + y + " " + z + " ");
while (true) {
x = y;
y = z;
z = x + y;
if(z>u) {
break;
}
System.out.print(z + " ");
}