0

私は何をすべきか理解していません。私の教授は、再帰を使用してフィボナッチ数列を作成することを望んでいます。for ループは許可されません。また、私 (アマチュア) は、たとえば 6 つの数字を順番に並べた文字列を作成する方法を知りません。

彼の指示は次のとおりです。「再帰を使用して、フィボナッチ数列を含む文字列を返すメソッドを作成します。整数を取り込んで、数列の何個の値を返す必要があるかを決定します。」

これは私がこれまでに持っているものです...

import java.util.*;

public class fibo {

  public final static int n = 0;
  public static String s = "";

  public static void main(String[] args) {

    Scanner scn = new Scanner (System.in);

    System.out.println("Please put in a number.");

    int n = scn.nextInt();

    s = Integer.toString(n);

    System.out.println(n+ ": " + fibonacci(n));
  }

  public static int fibonacci(int n) {  

    if(n <= 1)
      return n;

    else       
      return fibonacci(n - 1) + fibonacci(n - 2);
  }
}

それに加えて、その多くは本当に非効率的で面倒だと感じています。誰かが私が何をすべきかを本当に説明して助けてくれますか?

4

4 に答える 4

1

フィボナッチ数列でn番目の数値を生成しているようです。私には、生成しているすべての値(最後の値だけでなく)を保存して表示する必要があるようです。

したがって、単にではなく、割り当てが完了したことf(n)を表示する必要があります。f(1), f(2), ..., f(n-1), f(n)

于 2013-03-16T14:54:54.897 に答える
1

これはうまくいくはずです:


public class Fibonacci {

  public static void main(String[] args) {
    System.out.println(Fib(3));

  }

  // returns the next number in the Fibonacci sequence
  public static int Fib(int n) {
    if (n < 2) {
      return n;
    } else {
      return Fib(n - 1) + Fib(n - 2);
    }
  }
}
于 2019-06-28T04:03:02.803 に答える
0

これは、不要なコードなしでうまく機能するコードです。

import java.util.*;

public class Fibonaccis {



  public static void main(String[] args) {

    Scanner scn = new Scanner (System.in);

    System.out.println("Lägg in ett nummer.");

    int n = scn.nextInt();



    System.out.println(n+ ": " + fibonacci(n));
  }

// TODO Auto-generated method stub

  public static int fibonacci(int n) {  

    if(n <= 1)
      return n;

    else       
      return fibonacci(n - 1) + fibonacci(n - 2);
  }
}
于 2013-12-04T12:02:07.223 に答える