public static int fn(int index){
int result;
if(index==1||index==2){
result=1;
}else{//这里result未初始化一样可以用,但是如果改成}else if(index>0){就会报错result未初始化
result=fn(index-2)+fn(index-1);
}
return result;
}
有点明白,如果这个局部变量在return之前没有进行任何赋值操作,因为局部变量是没有默认值的,所以它在return的时候它的值是null?而返回值为int类型不允许返回null,是这样吧
追答不是的,不管是原始类型还是引用类型,如果是局部变量的话,你始终都需要初始化一个值。你试想一下你声明了一个局部变量,他在内存中分配了一个临时空间,而该空间并没有填上任何东西,你又RETURN 回去,内存空间在系统里是随机分配的,你觉得这样的话合理么?
为什么这样就不会报错?
追答假设不是上述的if 和else if这两个条件,那么应该返回怎么的result.java编译器会查找对应的所有分支条件,确定最后的返回结果一定要有值.这是所有编程语言的共性.
本回答被网友采纳