Java 停止递归打印
我是新来的,请耐心等待。 我在YouTube视频上看到了以下内容:Java 停止递归打印,java,recursion,Java,Recursion,我是新来的,请耐心等待。 我在YouTube视频上看到了以下内容: public class Recursion { public static void main(String[] args) { int index = 0; while (true) { System.out.println(fibonacci(index)); index++; } } public s
public class Recursion {
public static void main(String[] args) {
int index = 0;
while (true) {
System.out.println(fibonacci(index));
index++;
}
}
public static long fibonacci(int i) {
if (i == 0) return 0;
if (i <= 2) return 1;
long fibTerm = fibonacci(i - 1) + fibonacci(i - 2);
return fibTerm;
}
}
公共类递归{
公共静态void main(字符串[]args){
int指数=0;
while(true){
System.out.println(斐波那契指数);
索引++;
}
}
公共静态长fibonacci(int i){
如果(i==0)返回0;
如果(我通常你会做这样的事情
while(index < 20) {
while(索引<20){
是的,很容易:
public static void main(String[] args)
{
int index = 0;
while (true)
{
System.out.println(fibonacci(index));
index++;
if (index == 25) { //stop after having printed the 25th number
break;
}
}
}
将“while”循环替换为“for”循环
publicstaticvoidmain(字符串[]args)
{
int numberOfIterations=25;
for(int index=0;index
这正是“for”循环的用途:循环一定次数,然后停止。欢迎使用堆栈溢出
是的,你可以在n个数字被打印出来后停止打印数字,这很简单
while (index < n)
{
System.out.println(fibonacci(index));
index++;
}
while(索引
这就是导致它打印的原因,因为您的布尔值(true或false)始终为true,它将永远循环。可以通过用布尔语句替换while(true)
中的“true”来修复这一问题。例如:while(index
其中n是要打印的最大数字数(5、10、15、25等)是的,这是可能的。break;
退出while
循环一次index
达到所需的数值。while(index)这也是求解斐波那契的一个极为低效的算法。您可以使用动态编程使其大大加快。一句忠告。不要使用while(true)
直到你知道这实际上是如何工作的。就像这种情况一样,你可能最终会陷入无限状态loops@Cruncher,在《编程入门》中,解斐波那契是引入方法递归的一个经典例子。如果OP真的试图找到一种最佳方法来打印fibonnaci序列。我爱你,你的while循环似乎有一个不正确的哨兵。while(index<25)
是正确的方法。这真是一个愚蠢的代码。@Johan:当然,但我想这会更有启发性-尽可能少的改变来做需要的事情。
while (index < n)
{
System.out.println(fibonacci(index));
index++;
}