计算Fibonacci数的平均值

时间:2014-11-08 00:21:47

标签: java fibonacci

我的任务是询问用户他们想要多少斐波那契数字并打印出来,然后再显示这些数字的平均值。我在下面的代码中提出了一个显示Fibonacci数字的方法,但是我很难弄清楚如何合并程序的平均部分。不是要求你为我做这个,因为这是课堂上的功课,但是知道我应该写出程序的平均部分会很好。

import java.util.Scanner;
public class Clancy_Hw_03_04{
   public static void main (String[] args){
       Scanner input = new Scanner(System.in);
       int number = 0;
       System.out.println ("Enter N: ");
       number = input.nextInt(); 

       System.out.println("\n\nFibonacci series for " + number +" numbers : ");
       for(int i=1; i<=number; i++){
          System.out.print(fibonacciLoop(i) +" ");
       }
   }

   public static int fibonacciLoop(int number){
       if(number == 1 || number == 2){
          return 1;
       }
       int fibo1=1, fibo2=1, fibonacci=1;

       for(int i= 3; i<= number; i++){
          fibonacci = fibo1 + fibo2;  
          fibo1 = fibo2;
          fibo2 = fibonacci;

       }
       return fibonacci;  
   }    
}

3 个答案:

答案 0 :(得分:0)

继续计算总和,然后除以数字。 你可以做点什么......

int sum = 0;
for(int i=1; i<=number; i++){
      int fibo = fibonacciLoop(i);
      System.out.print(fibo +" ");
      sum += fibo;
}
System.out.println("Average = " + sum/number);

我希望这次我的问题是对的。

答案 1 :(得分:0)

main函数中添加另一个整数,以存储总值:

public static void main(String[] args)
{
    Scanner input = new Scanner(System.in);
    int number = 0;
    int sum  = 0; // Add this here
}

然后,在fibonacci函数内添加该变量:

public static int fibonacciLoop(int number)
{
    if(number == 1 || number == 2)
    {
        sum += 1;
        return 1;
    }
    int fibo1=1, fibo2=1, fibonacci=1;

    for(int i= 3; i<= number; i++)
    {
        fibonacci = fibo1 + fibo2;  
        fibo1 = fibo2;
        fibo2 = fibonacci;

    }
    sum += fibonacci; //Put this here, outisde the loop
    return fibonacci;
}

如果您想输出平均值,只需将sum除以number

System.out.println("Average is: " + (sum / number));

答案 2 :(得分:0)

如果您在函数fibonacciLoop()中打印斐波那契数字,并且不尝试返回每个连续的数字并从主循环中打印出来,那么您的问题可能更容易解决。然后总和和平均值就在你的指尖。

例如:

public static void main(...) {
  ...
  System.out.println("\n\nFibonacci series for " + number +" numbers : ");
  fibonacciLoop(i);
}
static void fibonacciLoop(int number) {
  int fibo1 = 1, fibo2 = 1, sum = 0, average = 0, fibonacci;
  for (int i = 1; i <= 2 && i <= number; i++) {
    System.out.print("1 ");
    sum += 1;
  }
  for (i = 3; i <= number; i++) {
    fibonacci = fibo1 + fibo2;
    System.out.print(fibonacci + " ");
    fibo1 = fibo2; fibo2 = fibonacci;
    sum += fibonacci;
  }
  System.out.println("  average = " + (float)sum/number)
}

编辑:确保在计算平均值

之前将和转换为浮点数