2015-10-07 173 views
0

我正在運行此java代碼,並且出現「缺少返回語句」錯誤 請幫忙。我正在Windows中使用cmd運行。錯誤「缺少return語句」

public class Fibonocci { 

    public static void main(String[] args) { 

     int i, limit, c; 
     i = 0; 
     limit = 5; 
     System.out.println("Fibonocci series :"); 
     for (c = 1; c <= limit; c++) { 
      System.out.println(fib(i)); 
      System.out.println("/n"); 
      i++; 
     } 

    } 

    public static int fib(int p) { 
     if (p == 0) { 
      return 0; 
     } 
     if (p == 1) { 
      return 1; 
     } else if (p > 1) { 
      return (fib(p - 1) + fib(p - 2)); 
     } 
    } 
} 
+0

這可能是一個班,但實施斐波納契迭代是waaaaay更有效:) – MalaKa

回答

1

您缺少默認return。您從ifelse if歸還。

如果兩個條件都不滿足會怎麼樣?你也需要提供。

我想建議返回-1 ID這兩個條件不滿足這是負數negative

public static int fib(int p) { 
     if (p == 0) 
      return 0; 
     else if (p == 1) 
      return 1; 
     else if (p > 1) 
      return (fib(p - 1) + fib(p - 2)); 
     else 
      return -1; 
    } 
+0

謝謝你,它的現在工作的罰款。 – Sam

2

您的代碼不會返回如果p<0什麼。

你可以把它改成:

public static int fib(int p){ 
     if (p<=0) // or perhaps you wish to throw an exception if a negative value is entered 
      return 0; 
     else if (p==1) 
      return 1; 
     else // when you end the if statement in else instead of else-if 
      // your method is guaranteed to return something for all inputs 
      return(fib(p-1)+fib(p-2)); 
    } 
+0

謝謝,它現在工作的很好。 – Sam