2016-03-20 14 views
3

私は同じような質問が以前に尋ねられたかもしれないことを知っています。フィボナッチシリーズの次のn番目の数字をC#で印刷するには?

すなわちユーザーが「5」は、それがある場合は0、1、1、2、3、8:

私のコードの出力は、数字の長さを加えたユーザ入力に基づくものです。

しかし、ユーザーがいくつかの番号を入力した後に、次のn番目の番号を印刷しようとしています。ユーザーが "5"を入力すると、出力は5,8,13,21,34、...のようになります。

これを達成するためにコードを変更するにはどうすればよいですか?

ありがとうございました。

 Console.WriteLine("Please enter any nth number of the Fibonacci series."); 

     string user_num = Console.ReadLine(); 

     int userNumber = int.Parse(user_num); 

     int[] FibNum = new int[userNumber]; 

     int firstNum = 1; 
     Console.Write("{0},", firstNum); 

     int secondNum = 1; 
     Console.Write("{0},", secondNum); 

     int sumNum = 0; 

     while (sumNum <= userNumber) 
     { 
      sumNum = (firstNum + secondNum); 
      Console.Write("{0}, ", sumNum); 

      firstNum = secondNum; 
      secondNum = sumNum;    
     } 

     Console.ReadLine(); 

答えて

2

さてあなたは初めからシリーズを計算する必要がユーザーの入力値の後にあなたのfirstNumsencondNumを持っています。しかし、印刷する前に単にifを置くだけで、値がユーザー入力以上かどうかを確認してから印刷することができます。それ以外の場合は無視してください。

Console.WriteLine("Please enter any nth number of the Fibonacci series."); 

    string user_num = Console.ReadLine(); 

    int userNumber = int.Parse(user_num); 

    int[] FibNum = new int[userNumber]; 

    int firstNum = 1; 
    int secondNum = 1; 
    if(userNumber<=1){ 
    Console.Write("{0},", firstNum); 
    Console.Write("{0},", secondNum); 
    } 
    int sumNum = 0; 

    while (sumNum <= userNumber) 
    { 
     sumNum = (firstNum + secondNum); 
     if(sumNum>=userNumber) //check to filter less values 
     Console.Write("{0}, ", sumNum); 

     firstNum = secondNum; 
     secondNum = sumNum;    
    } 

    Console.ReadLine(); 
+0

ありがとうございます。ユーザーが入力した番号の前には「1,1」が出力され、一連の後続の番号は印刷されません。 – Luzing

+0

@Luzing私はコードを編集しました。もしあれば、別のものを追加することができます。コードを見てください;) –

+0

今、私は論理をよく理解しています、ありがとう。条件付きのif文でコードを制約するだけです。与えられた番号の後の番号だけでなく、他の後続の番号も印刷できますか? – Luzing

関連する問題