2014-02-21 127 views
-1

創建一個程序,該程序可以輸入一個數字並提供相應的斐波那契數作爲輸出。但是我的代碼出了問題:c斐波納契java程序

import java.util.Scanner; 
public class Fibonacci { 
    public static void main(String[] args) { 
     Scanner in = new Scanner (System.in); 
     int prev, next, num, sum = 0, n; 
     prev=next=1; 

     System.out.print("Input number: "); 
     num = in.nextInt(); 

     if ((num == 1) || (num ==2)) 
      System.out.println(prev); 

     else { 
      for(n=1; n<=prev; n++) { 
       sum = prev + next; 
       prev = next; 
       next = sum; 
      } 

      System.out.println(sum); 
     } 

    } 
} 

有點問題我只是看不到。幫幫我? :c

+5

「錯」不清楚,請解釋發生了什麼問題 – 2014-02-21 19:44:26

+1

「其等價斐波那契數」是什麼意思? –

+0

沒有循環 –

回答

1

更改您的for循環這樣的:

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

這會解決你的問題。

說明: 由於您已經確定1或2會給您一個1,請啓動循環@ 2.循環直到n變得大於輸入的數字。這將解決您遇到的問題。

+0

是的,我有。雖然我只上了10個名額。 或者我誤解了發佈的問題?我明白了這個問題:1是1,2是1,3是2,4是3,5是8,7是13等... – Opzoleet

+0

謝謝! :)它工作 順便說一句5是5。不是8 :) –

+0

沒問題,有時從問題中退出一點,然後畫出來看看它應該是什麼樣子。 編輯:是的,sry,並不意味着5是8 ... type(5是5) – Opzoleet

0

如果您想獲取用戶輸入的斐波那契數字次,那麼您需要在for循環中進行迭代。

for(n=1; n<=num; n++) { 
        sum = prev + next; 
        prev = next; 
        next = sum; 
        System.out.println(sum); 
       } 

此外還打印您需要將其放入循環中的數字。

+3

而不是爲人們做功課,爲什麼不解釋通過問題和調試代碼工作的過程? –

+0

kk先生@ KevinWorkman.It會更好,如果你等待一段時間downvote答案 – Kick

2

n超過prev時,您正在停止循環,因此您沒有得到正確的數字。別鬧了,當你通過num代替:

for(n = 1; n <= num; n++) { 

實例運行:

Input number: 6 
21