具有极限值的斐波那契数列 java

Fibonnaci sequence java with limit value

我的 java-程序需要帮助。该程序应该要求斐波那契可以拥有的最高值,并打印出达到该值的系列数,但它不起作用。有什么建议吗?

import java.util.Scanner;

public class Fibonacci {
    public static void main (String[] args){
        Scanner in = new Scanner(System.in);
        System.out.println("The largest number fibonacci can be: ");
        int number = in.nextInt();
        if (number < 0){
            System.out.println("Wrong! Max-value has to be at least 0.");
        }
        int i;
        int f0 = 0;
        int f1 = 1;
        int fn;
        int value=0;
        for (i = 0; i<=value; i++){
            fn = f0 + f1;
            System.out.println("Fibonacci-number " + i + " = " + f0);
            f0 = f1;
            f1 = fn;
            value = number - f0;
        }
    }
}

如果我输入 number = 12,程序应该打印:

fibonacci-number 0 = 0 

...

fibonnaci-number 12 = 144

这是您要找的吗?

    public static void main(String[] args) {

Scanner in = new Scanner(System.in);
int f0 = 0;
int f1 = 1;
int fn = 0;

System.out.println("The largest number fibonnaci can be: ");
System.out.println("Input your number: ");
int number = in.nextInt();

if (number < 0){
    System.out.println("Wrong! Max-value has to be at least 0.");
} else {
    System.out.println(f0);
    System.out.println(f1);
    while (fn < number){
        fn = f0 + f1;
        f0 = f1;
        f1 = fn;
        if (fn < number){
            System.out.println(fn);
        }
    }
}
}

只需更改循环以将 increment-er (i) 的值与 'number ' 变量进行比较

for (i = 0; i<=number; i++){
//.........
}

如果你想正确打印系列中更大的数字,也可以使用 double 而不是 int。

没有使用 'value' 变量。

此外,短语 'the highest value fibonacci can have' 是 misleading.You 提到的数字表示您示例中系列中的术语数。

如果您希望 'number' 成为系列中的最高值,请使用以下方法,

do{

        fn = f0 + f1;
        System.out.println("Fibonnaci-tall " + i + " = " + f0);
        f0 = f1;
        f1 = fn;
        i++;

}while(f0<=number);

enter image description here

使用这个程序,它会解决你的问题。

试试这个...它有效!

 public static void main (String[] args){
    Scanner in = new Scanner(System.in);
    System.out.println("The largest number fibonacci can be: ");
    int number = in.nextInt();
    if (number < 0){
        System.out.println("Wrong! Max-value has to be at least 0.");
    }
    else{
    int i=0;
    int f0 = 0;
    int f1 = 1;
    int fn;
    int value=0;
   do{
    //for (i = 0; i<=value; i++){
        fn = f0 + f1;
        System.out.println("Fibonacci-number " + i + " = " + f0);
        f0 = f1;
        f1 = fn;
        value = number - f0;
        i++;
    }while(f0<=number);
}//else
}