Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/joomla/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
循环逻辑失败/JAVA_Java_While Loop - Fatal编程技术网

循环逻辑失败/JAVA

循环逻辑失败/JAVA,java,while-loop,Java,While Loop,我需要从键盘扫描一个整数,打印出比插入的整数小的斐波那契数。 现在它打印所有的小号和一个大的。 需要改变一下时间 public class tp2 { public static int Fibo(int pos){ int retornado=0; if(pos==0 || pos==1){ retornado=pos; }else{ retornado=Fibo(pos-2)+Fibo(pos-1); }

我需要从键盘扫描一个整数,打印出比插入的整数小的斐波那契数。 现在它打印所有的小号和一个大的。 需要改变一下时间

public class tp2 {

 public static int Fibo(int pos){
      int retornado=0;
      if(pos==0 || pos==1){
       retornado=pos;
      }else{
       retornado=Fibo(pos-2)+Fibo(pos-1);
      }
      return retornado;
     }
public static void main(String[] args) {
    int tope,i, numero;
    numero=0;
    i=0;
    Scanner stdin = new Scanner (System.in);
    System.out.println("Ingrese un entero tope :");
    tope = stdin.nextInt();
    while (numero<tope){
        numero=Fibo(i);
        System.out.println(numero);
        i++;
    }
  }
}
公共类tp2{
公共静态int Fibo(int pos){
int=0;
如果(pos==0 | | pos==1){
retronado=pos;
}否则{
retronado=Fibo(pos-2)+Fibo(pos-1);
}
返回纳多;
}
公共静态void main(字符串[]args){
一,一,数字;
数值=0;
i=0;
扫描仪标准输入=新扫描仪(System.in);
系统输出打印LN(“入口/入口/入口”);
tope=stdin.nextInt();

while(numero可能不是最漂亮的解决方案,但将您当前的while更改为:

while ((numero=Fibo(i))<tope){
    System.out.println(numero);
    i++;
}

while((numero=Fibo(i))可能不是最漂亮的解决方案,但将您当前的while更改为:

while ((numero=Fibo(i))<tope){
    System.out.println(numero);
    i++;
}
while((numero=Fibo(i))这样试试:

numero=Fibo(i);
while (numero<tope){
    System.out.println(numero);
    i++;
    numero=Fibo(i);
}
numero=Fibo(i);
而(数字试着这样做:

numero=Fibo(i);
while (numero<tope){
    System.out.println(numero);
    i++;
    numero=Fibo(i);
}
numero=Fibo(i);

while是一种不好的方法,它调用
Fibo(i)
两次..它调用了两次fibo,以便通过递归获得fibonacci,然后调用fibo来决定是否打印它,然后再打印它。它工作正常,但您可以在同一个块中调用相同的函数两次,而您可以将其分配给变量。在这种情况下,这不会产生很大影响,但在将来,如果您希望得到相同的结果在这里,最好将结果赋给变量,这样您就不会面临性能问题。done`while(Fibo(i)这样做不好。它调用
Fibo(i)
两次..它调用了两次fibo,以便通过递归获得fibonacci,然后调用fibo来决定是否打印它,然后再打印它。它工作正常,但您可以在同一个块中调用相同的函数两次,而您可以将其分配给变量。在这种情况下,这不会产生很大影响,但在将来,如果您希望得到相同的结果像这里一样,最好将结果赋给变量,这样你们就不会面临性能问题。谢谢!直接回答这个问题。`while(Fibo(i)谢谢!直接回答这个问题。`while(Fibo(i)