我试图调用这个递归方法,但我不明白为什么它没有到达else语句返回mul。我在main函数中传递值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;
}
答案 0 :(得分:0)
如果不知道确切的错误信息,我不是100%确定问题是什么,但我猜是以下内容:
您的功能看起来像这样(简化):
int calc(int x) {
if(someCondition){
if(otherCondition){}
calc(x+1);
} else {
return mul;
}
}
问题是,如果someCondition
为true
,则该函数不会返回任何内容。你可能想这样做:
return calc(x+1);
而不仅仅是
calc(x+1);