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 回答
-1

这段代码显示斐波那契直到 8 点,没有任何循环......

public class FinnonnacciDemo2 {

    static int no = 0, n = 8;

    public static void main(String[] args) {
        // This will print series till 8
        fib(0, 1);
    }

    public static void fib(int a, int b) {
        // Terminating condition.
        if (a >= n) {
            return;
        }

        else {
            System.out.print("\t" + no);
            no = a + b;
            a = b;
            b = no;
            fib(a, b);
        }
    }
}
于 2013-09-27T07:40:39.563 回答