使用递归查找第 n 个斐波那契数时出错

Error with finding nth number of Fibonacci using recursion

我遇到了一个错误,说我的 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;

您必须初始化变量。

变化:

int finish;

 int finish = 0;

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

int finish;

对此:

int finish = 0;

您必须声明 Return 变量。因为if条件只能在调用方法的时候执行。

int finish = 0;

局部变量没有默认值。它们的初始值是未定义的,没有通过某种方式分配。在使用局部变量之前,必须对其进行初始化。

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

int finish = 0;

是的,必须在fibNum方法

中初始化int变量finish