Java 停止递归打印

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

我是新来的,请耐心等待。 我在YouTube视频上看到了以下内容:

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++;
}