并非所有的代码途径都返回值
并非所有的代码路径都返回值
static int DG(int i )
{
if (i <= 0)
{ return 0; }
else
if (i >= 0 && i <= 2)
{ return 1; }
else
//if (i >= 3)此处加上这一句的话就会报“并非所有的代码路径都返回值”
{ return DG(i - 1) + DG(i - 2); }
}
是什么原因啊
------解决思路----------------------
------解决思路----------------------
------解决思路----------------------
既然都有return就没必要else了
static int DG(int i )
{
if (i <= 0)
{ return 0; }
if (i >= 0 && i <= 2)
{ return 1; }
if (i >= 3)此处加上这一句的话就会报“并非所有的代码路径都返回值”
{ return DG(i - 1) + DG(i - 2); }
}
------解决思路----------------------
或者最简单的解决办法,在代码的最后,写上return 0;
这样前面没有覆盖到的,会走到最后一行
如果都覆盖到,相当于白写,对逻辑没影响.
------解决思路----------------------
编译器确实能够智能的判断一些if是否已经包含了全部的情况
比如
if(true)
{
return 1;
}
或者
int i=0;
if(i!=null)
{
return 1;
}
这些都不会报错
但是涉及数字比较的,编译器还没有智能到那种程度
比如
if(i>=0
------解决思路----------------------
i<0)
{
return 1;
}
会报错
static int DG(int i )
{
if (i <= 0)
{ return 0; }
else
if (i >= 0 && i <= 2)
{ return 1; }
else
//if (i >= 3)此处加上这一句的话就会报“并非所有的代码路径都返回值”
{ return DG(i - 1) + DG(i - 2); }
}
是什么原因啊
------解决思路----------------------
static int DG(int i )
{
if (i <= 0)
{ return 0; }
else if (i >= 0 && i <= 2)
{ return 1; }
else if (i >= 3)此处加上这一句的话就会报“并非所有的代码路径都返回值”
{ return DG(i - 1) + DG(i - 2); }
else return 0;
}
------解决思路----------------------
static int DG(int i )
{
int result =0;
if (i <= 0)
{
result = 0;
}
else
if (i >= 0 && i <= 2)
{
result =1;
}
else
//if (i >= 3)此处加上这一句的话就会报“并非所有的代码路径都返回值”
{
result = DG(i - 1) + DG(i - 2);
}
return result ;
}
------解决思路----------------------
既然都有return就没必要else了
static int DG(int i )
{
if (i <= 0)
{ return 0; }
if (i >= 0 && i <= 2)
{ return 1; }
if (i >= 3)此处加上这一句的话就会报“并非所有的代码路径都返回值”
{ return DG(i - 1) + DG(i - 2); }
}
------解决思路----------------------
或者最简单的解决办法,在代码的最后,写上return 0;
这样前面没有覆盖到的,会走到最后一行
如果都覆盖到,相当于白写,对逻辑没影响.
------解决思路----------------------
编译器确实能够智能的判断一些if是否已经包含了全部的情况
比如
if(true)
{
return 1;
}
或者
int i=0;
if(i!=null)
{
return 1;
}
这些都不会报错
但是涉及数字比较的,编译器还没有智能到那种程度
比如
if(i>=0
------解决思路----------------------
i<0)
{
return 1;
}
会报错