2

フィボナッチ数列を実行するJavaプログラムを作ってみました。

これが私のコードです:

import java.io.*;
public class Fibonacci{
    public static void main(String[]args){
        BufferedReader Data=new BufferedReader (new InputStreamReader(System.in));
        int ctr1=0;
        int ctr2=0;
        int num1=0;
        int num2=0;
        int num3=0;
        try{
            System.out.println("How many numbers would you want to see?");
            ctr2=Integer.parseInt(Data.readLine());
            for(int ans=0; ctr1==ctr2; ctr1++){
            num1++;
            System.out.println(num2 + "\n" + num1);
            ans=num1+num2;
            System.out.println(ans);
            ans=num3;
            }
        }catch(IOException err){
            System.out.println("Error!" + err);
        }catch(NumberFormatException err){
            System.out.println("Invald Input!");
        }
    }
}

明らかに、私は Java の初心者であり、for ステートメントを適切に使用する方法がわかりません。誰かが私のコードを機能させるのに十分親切でしょうか? または、動作する短いコードを作成することもできます。初心者なので安心してください。ありがとう :)

4

15 に答える 15

0

このコード スニペットを見てください。これは、あなたのコード スニペットよりもはるかに理解しやすいものです。解決策のヒントは簡単です。最初の 2 つのフィボナッチ数に対して 2 つのポインターを保持し、ループ内で適切に更新します。以下の例では、ループは 10 回実行されますが、必要に応じて変更できます。

static void fibonacci() {
    int ptr1 = 1, ptr2 = 1;
    int temp = 0;
    System.out.print(ptr1 + " " + ptr2 + " ");
    for (int i = 0; i < 10; i++) {
        System.out.print(ptr1 + ptr2 + " ");
        temp = ptr1;
        ptr1 = ptr2;
        ptr2 = temp + ptr2;
    }
}

出力:

1 1 2 3 5 8 13 21 34 55 89 144

于 2013-08-18T06:35:35.977 に答える
0

答えを拡張して、本当にクールに見せたい場合は、再帰を使用してください。

public class Fibonacci {
    public static long fib(int n) {
        if (n <= 1) return n;
        else return fib(n-1) + fib(n-2);
    }

    public static void main(String[] args) {
        int N = 300; // how many numbers you want to generate
        for (int i = 1; i <= N; i++)
            System.out.println(i + ": " + fib(i));
    }
}

ここにそれが何であるかのGoogle検索があります。それらのリソースが役立つことを願っています: http://bit.ly/1cWxhUS

于 2013-08-18T06:39:04.943 に答える
-1
 public static int[] fibonachiSeq(int n)
 {
     if (n < 0)
         return null;

    int[] F = new int[n+1];

    F[0] = 0;
    if (n == 0)
        return F;
    F[1] = 1;

    for (int i = 2; i <= n; i++)
    {
        F[i] = F[i-1] + F[i-2];
    }



    return F;

 }
于 2015-05-15T19:36:25.420 に答える
-1
public class FibonacciExercitiu {

public static void main(String[] args) {


    int result = fib(6); //here we test the code. Scanner can be implemented.
    System.out.println(result);

}

public static int fib(int n) {

    int x = 1;
    int y = 1;
    int z = 1; //this line is only for declaring z as a variable. the real assignment for z is in the for loop.

    for (int i = 0; i < n - 2; i++) {
        z = x + y;
        x = y;
        y = z;

    }

    return z;
}

/*
1.   F(0) = 1 (x)
2.   F(1) = 1.(y) =>Becomes x for point4
3.(z)F(2) = 2 (z) =>Becomes Y for point4 // becomes X for point 5
4.(z)F(3) = 3                            // becomes y for point 5
5.(z)F(4) = 5 ..and so on
*/

}

于 2015-04-27T22:04:12.040 に答える
-1

パブリック クラス フェボナッチ {

public static void main(String[] args) {
    int first =0;
    int secend =1; 
    System.out.print(first+","+secend);
    for (int k=1;k<7;k++){
        System.out.print(","+(first+secend ));
        if(k%2!=0)
            first+=secend;
        else 
            secend+=first;
        }
    }
}
于 2016-08-03T19:58:03.780 に答える
-1

while ループの使用

class Feb
{
    static void Main(string[] args)
    {
        int fn = 0;
        int sn = 1;
        int tn = 1;

        Console.WriteLine(fn);
        Console.WriteLine(sn);
        while (true)
        {
            tn = fn + sn;

            if (tn >10)
            {
                break;
            }
            Console.WriteLine(tn);
            fn = sn;
            sn = tn;
        }
        Console.Read();
    }
}
于 2015-06-29T19:04:11.683 に答える