2015-10-07 151 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