使用递归查找第n个Fibonacci时出错

时间:2015-04-10 08:13:29

标签: java scope fibonacci

我遇到错误,说我的int变量final可能没有初始化,但我认为我在if语句中初始化了它。

import java.util.Scanner;

public class Fibo
{
   static int fibNum(int num)
   {
      int finish;
      if(num < 0)
      {   
         finish = -1;
      }
      else if(num == 0 || num == 1)
      {
         finish = num;
      }   
      else if(num > 1)
      {
         finish = fibNum(num-1) + fibNum(num-2);
      }
      return finish;
   }//end fibNum

   public static void main(String []args) 
   {
    int num;
    Scanner in = new Scanner(System.in);
    num = in.nextInt();
    fibNum(num);
    System.out.println(" is the nth number in the fibbonaci sequence that you are looking for");
   }//end main
}//end class

错误:

Fibo.java:20: error: variable finish might not have been initialized
      return finish;

5 个答案:

答案 0 :(得分:0)

您必须初始化变量。

变化:

int finish;

 int finish = 0;

答案 1 :(得分:0)

虽然成员字段(变量)可以隐式初始化为默认值,但局部变量不能,因此您应该通过更改它来显式初始化它:

int finish;

到此:

int finish = 0;

答案 2 :(得分:0)

您必须声明返回变量。因为如果条件只能在调用方法时执行。

int finish = 0;

答案 3 :(得分:0)

局部变量不会获得默认值。它们的初始值未定义,没有通过某种方式赋值。在使用局部变量之前,必须初始化它们。

这就是你必须初始化局部变量的原因。

int finish = 0;

答案 4 :(得分:0)

是的,您必须在fibNum方法

中初始化int变量完成