【问题标题】:Java Fibonacci seriesJava 斐波那契数列
【发布时间】:2015-08-30 09:15:00
【问题描述】:

为了询问用户他想查看这一系列 30 中的哪个数字并提示输入一个整数 - 一个介于 1 和 30(含)之间的数字,下一步将是什么?

因此,如果用户想要查看斐波那契数列的第五 (5) 个数字,则用户将输入整数 5 以响应提示。

public class MyFibonacci {
    public static void main(String a[]) {
         int febCount = 30;
         int[] feb = new int[febCount];
         feb[0] = 0;
         feb[1] = 1;
         for(int i=2; i < febCount; i++) {
             feb[i] = feb[i-1] + feb[i-2];
         }

         for(int i=0; i< febCount; i++) {
                 System.out.print(feb[i] + " ");
         }
    }
}   

【问题讨论】:

    标签: java arrays performance fibonacci


    【解决方案1】:

    使用Scanner 或一些InputStreamReader 从控制台读取输入。 Scanner 会这样使用:

    Scanner scanner = new Scanner(System.in);
    if(scanner.hasNextInt())
        int someInt = scanner.nextInt();
    

    另一种选择是使用这样的阅读器:

    BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
    

    并从阅读器的输出中解析所需的数据。不过在大多数情况下,使用Scanner 会更简单。

    【讨论】:

      【解决方案2】:

      给你:

       public class TestProgram {
      
          public static void main(String a[]) {
      
              Scanner reader = new Scanner(System.in);
              printFibonacciSeries();
              System.out.println("");
              System.out.println("Enter the number in the series of 30 you want to see");
              int num = reader.nextInt();
              int febCount = 30;
              int[] feb = new int[febCount];
              feb[0] = 0;
              feb[1] = 1;
              for (int i = 2; i < febCount; i++) {
                  feb[i] = feb[i - 1] + feb[i - 2];
      
                  if (i == num) {
                      System.out.print(feb[i] + " ");
                  }
              }
          }
      
          public static void printFibonacciSeries() {
      
              int febCount = 30;
              int[] feb = new int[febCount];
              feb[0] = 0;
              feb[1] = 1;
              for (int i = 2; i < febCount; i++) {
                  feb[i] = feb[i - 1] + feb[i - 2];
                  System.out.print(feb[i] + " ");
      
              }
          }
      
      }
      

      【讨论】:

      • 这是完美的,我遇到的唯一问题是让程序在要求用户选择数字之前打印数字(系列中最多 30 个)
      • main 方法中的第二个 for 循环很奇怪。为什么不直接删除 for 循环并将其中的内容 (if (i == num) { System.out.print(feb[i] + " "); }) 替换为 System.out.print(feb[num] + " ");
      • @Ritesh Karwa 你能从系列中获得第 30 个元素吗?
      • @VNT 实际上没有得到您的问题?如果你想要第 30 个元素,只需让 int febCount = 31;
      【解决方案3】:
      public class Fibonacci_series  // upto less than a given number
      {
          public static void main(long n)
          {
              long a=0, b=1, c=0;
              while (c<n)
              {
                  a=b;
                  b=c;
                  System.out.print(c+", ");
                  c=a+b;
              }
              System.out.print("....");
          }
      }
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2015-06-05
        • 2010-12-20
        • 2012-02-16
        • 1970-01-01
        • 2013-08-03
        • 2014-05-19
        相关资源
        最近更新 更多