1

フィボナッチ型級数の n 番目の項を見つけることができるプログラムを作成しようとしています (ちなみに、非再帰的でなければなりません)。ユーザーから任意の 2 つの数字を取得し、それらを最初の 2 つの用語として使用できる必要があります。

たとえば、ユーザーが f1 = 2 および f2 = 3 と入力した場合、シリーズは 2、3、5、8、13、21 などになります。

ユーザーは、出てきたい用語を入力することもできます。

ほとんどのプログラムは完了しました (と思います) が、2 つの問題があります。

  1. n 番目の用語を見つけるとき、プログラムは f1 と f2 を用語 1 と 2 としてカウントする必要があります。
  2. プログラムは n 項までのすべての数値を出力しますが、n 項だけを出力したい

私はこれにしばらく携わっています。私は Java にかなり慣れていません。2 年前に入門クラスを受講しました。今は次のクラスに参加していて、少し問題があります。感謝!

import java.util.Scanner;
public class fibs
{
  public static void main(String[] args)
  {
    Scanner keyboard = new Scanner(System.in); // readying keyboard for input
    int f1, f2, n, fib;
    System.out.println("Please enter a vaule for F(1):");
    f1 = keyboard.nextInt();
    System.out.println("Please enter a vaule for F(2):");
    f2 = keyboard.nextInt();
    System.out.println("Please enter a vaule for n :");
    n = keyboard.nextInt();

    if ((f1<0)||(f2<0)||(f1>1000)||(f2>1000)||(n<1))
    {
      System.out.println("Please try again");
      return;
    }
    else
    {
      int i;
      for (i=0; i<n; i++)
      {

        fib=f1+f2;
        f1=f2;
        f2=fib;
        System.out.println( fib );

      }


    }
  }
}
4

2 に答える 2

1

2番目の質問の解決策System.out.println(fib);と入力するだけです。ループの外側。したがって、fibの最終値が直接表示されます。あなたの最初の質問が理解できません!

fibを初期化します(int fib = 0)。forループを使用して変数を宣言することもできます。したがって、forループの前にiを宣言する必要はありません。forループ内で次のように宣言するだけです

for (int i=2; i<n; i++)  
{  
    fib=f1+f2;  
    f1=f2;  
    f2=fib;  
}  

System.out.println( fib );

完全なコード

import java.util.Scanner;  
public class fibs  
{  
 public static void main(String[] args)  
 {  
  Scanner keyboard = new Scanner(System.in); // readying keyboard for input  
  int f1, f2, n, fib = 0;  
  System.out.println("Please enter a vaule for F(1):");  
  f1 = keyboard.nextInt();  
  System.out.println("Please enter a vaule for F(2):");  
  f2 = keyboard.nextInt();  
  System.out.println("Please enter a vaule for n :");  
  n = keyboard.nextInt();  

  if ((f1<0)||(f2<0)||(f1>1000)||(f2>1000)||(n<1))  
  {  
   System.out.println("Please try again");  
   return;  
  }  
  else  
  {  
   for (int i=2; i<n; i++)  
   {  
    fib=f1+f2;  
    f1=f2;  
    f2=fib;        
   }
   System.out.println( fib );  
  }  
 }  
}
于 2013-01-27T22:26:49.503 に答える
0

1)ループを2から開始します。

for (i=2; i<n; i++)

2)println()の呼び出しをループの外に置きます。

for (i=2; i<n; i++)  
{  
    fib=f1+f2;  
    f1=f2;  
    f2=fib;  
}
System.out.println(fib);
于 2013-01-27T22:27:44.513 に答える