-1

解かなければならないパズルがあるので助けてください!フィボナッチ数列を作成しましたが、0 を含めるのを忘れていました。誰がこのなぞなぞを解決するのを手伝ってくれますか? 一連の入力が 5 の場合、出力は 0,1,1,2,3 になるはずです。コードをクリーンアップして、完全にゼロから始めることなく目的の結果を得るには、何を変更すればよいですか?

//Class Assignment 9 little Fibonacci series based on what input
//the user provides
import java.util.Scanner;
public class LittleFibonacci {

    int number;// This declares an int variable
    public static void main(String[] args){

        //itnu is the new object
        LittleFibonacci itnu = new LittleFibonacci ();
        itnu.GetNumberInput();
     }

    public void GetNumberInput()
    {
        Scanner input = new Scanner(System.in);
        System.out.println("Enter a number and that number will be a" +
                " \nrepresentitive of the length of a sequence in the Fibonocci series.");
        number = input.nextInt();
        int f1, f2=0, f3=1;

        for(int i = 1 ; i <= number ; i++ )
        {
            System.out.print(" "+f3+" ");
            f1 = f2;
            f2 = f3;
            f3 = f1 + f2;
        }    
        input.close();
    }

}
4

3 に答える 3

1

ループを 1 ではなく 0 から開始し、それに{f1,f2,f3}応じて初期化を変更します (読者の演習として残しておきます)。

ここで最初にゼロを出力するように指示する他のソリューションは、基本的に不正行為です。すべてのフィボナッチ数をハードコーディングすることもできます。そんなことをしても何の評価も得られません。

于 2013-04-15T23:36:58.073 に答える
0

追加

 System.out.print(" "+f2+" ");

for ループの前。for ループの終了条件を < に変更します。

完全主義者であるためには、ユーザーが 0 (または負の数) を入力していないこと、その場合は f2 を出力していないことも確認する必要があると思います。

これは少し「不潔」に見えるかもしれませんが、フィボナッチ数列には 2 つの開始番号があり、それらは特別であり、特別な処理が必要です。

于 2013-04-15T21:56:20.920 に答える
-1

私がとるアプローチは、最初に基本ケースを印刷し、各反復後にそれらをリセットすることです

int fPrev = 0, fCur = 1;

System.out.print(fPrev+" "+fCur);

for(int i = 2 ; i <= number ; i++ )
{
    int fNew = fPrev + fCur

    System.out.print(" "+fNew);
    fPrev = fCur;
    fCur = fNew;
} 
于 2013-04-15T21:58:25.613 に答える