递归程序出现‘warning: control reaches end of non-void function’警告的解决方法
消除“control reaches end of non-void function”警告的方法
这个警告的原因是你的函数声明返回vector<int>类型,但存在代码路径没有返回值:当n != N-1时,执行完递归调用Min_Max(a,n+1,N,b);后,函数直接走到末尾,没有返回任何内容,编译器因此触发警告。
修复方法很简单,把递归调用的语句改为返回递归调用的结果,确保所有分支都有返回值:
vector<int> Min_Max(vector<int>& a,int n,int N,vector<int>& b) { if(n==N-1) { return b; } if(a[n]<b[0]) { b[0]=a[n]; } if(a[n]>b[1]) { b[1]=a[n]; } return Min_Max(a,n+1,N,b); // 添加return,确保所有路径有返回值 }
这样修改后,所有代码路径都会返回一个vector<int>对象,警告就会消失。
内容的提问来源于stack exchange,提问作者Rahul Namavaram
相关产品推荐
相关产品推荐

