int findpow(int n1,int k, int count){ //while calling, k=1, count=0
if(k<n1)
return findpow(n1,k*2,count+1);
if(k==n1)
return count;
if(k>n1)
return --count;
}
这是一个返回小于 n 的最大2的幂的函数。当我在我的ubuntu终端(g ++ 4.8.4)中运行它时,它运行正常。但是当我在www.hackerrank.com上运行它时,它会给出一个错误(控制达到非空函数的结束)。问题是,我参加了这个网站上的很多比赛,我多次遇到过这个问题。
请告诉您是否知道如何解决问题。
答案 0 :(得分:4)
您可以像这样使用else if
语句:
int findpow(int n1,int k, int count){ //while calling, k=1, count=0
if(k<n1)
return findpow(n1,k*2,count+1);
else if(k==n1)
return count;
else // Eliminate compiler errors (warnings)
return --count;
}
或如@juanchopanza所说:
int findpow(int n1,int k, int count){ //while calling, k=1, count=0
if(k<n1)
return findpow(n1,k*2,count+1);
if(k==n1)
return count;
// Eliminate compiler errors (warnings)
return --count;
}
它将与您的代码做同样的事情,但不会对编译器产生怀疑,因为编译器不能从函数返回。
答案 1 :(得分:1)
&#39;控制到达无效功能的结束&#39;警告不是错误,在这种情况下可以安全地忽略,但如果你想抑制警告,有多种方法: