C++ 控件已到达非Void函数的末尾

C++ 控件已到达非Void函数的末尾,c++,recursion,C++,Recursion,我试图调用这个递归方法,但我不明白为什么它没有到达else语句来返回mul。我在主函数中传递值0,它小于n,当x大于n时,它应该移到else函数 #include <cmath> #include <cstdio> #include <vector> #include <iostream> #include <algorithm> using namespace std; int n,mul=0; vector <int>

我试图调用这个递归方法,但我不明白为什么它没有到达else语句来返回mul。我在主函数中传递值0,它小于n,当x大于n时,它应该移到else函数

#include <cmath>
#include <cstdio>
#include <vector>
#include <iostream>
#include <algorithm>
using namespace std;
int n,mul=0;
vector <int> a;

int calc(int x)
{   int mul,chk;

int l=n;
if(x<n)
{   
    chk=a[x]*(l-1);
    l--;
    if(mul<chk)
        {
            mul=chk;
    }

  calc(x+1);
        }

  else  
   { return mul;}

  }

int main() {

cin>>n;
for(int i=0;i<n;i++)
    cin>>a[i];
sort(a.begin(),a.end());

int z=calc(0);
cout<<z;

return 0;
 }
#包括
#包括
#包括
#包括
#包括
使用名称空间std;
int n,mul=0;
载体a;
整数计算(整数x)
{int mul,chk;
int l=n;
if(xn;
对于(int i=0;i>a[i];
排序(a.begin(),a.end());
int z=计算值(0);

cout在不知道确切的错误信息的情况下,我不能100%确定问题出在哪里,但我猜问题出在以下方面:

您的函数如下所示(简化):

问题是,如果
someCondition
true
,则函数不会返回任何内容。您可能希望执行以下操作:

return calc(x+1);
而不仅仅是

calc(x+1);

“它没有到达else语句”。示例代码中没有“else”关键字。正确格式化代码将使诊断此问题的根源变得更加容易。
calc(x+1);