控制已结束非无效功能

Control reached end of Non Void Function

本文关键字:无效 功能 结束 控制      更新时间:2023-10-16

我正在尝试调用这种递归方法,但我不明白为什么它没有到达返回mul的else语句。我在主函数中传递值 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;
 }

> 知道确切的错误消息,我不是 100% 确定问题是什么,但我想是以下几点:

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

int calc(int x) {
    if(someCondition){   
        if(otherCondition){}
        calc(x+1);
    } else {
        return mul;
    }
}

问题是如果someConditiontrue,该函数不返回任何内容。您可能想执行以下操作:

return calc(x+1);

而不仅仅是

calc(x+1);