2015-06-11 130 views
-4

我想调用这个递归方法,但我不明白为什么它没有达到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; 
} 
+0

“它没有达到else语句”。示例代码中的任何地方都没有“else”关键字。 –

+0

正确地格式化您的代码,将使诊断此问题的源更加容易。 –

回答

0

Wihtout知道确切的错误信息,我不是100%确定是什么问题,但我想它是这样的:

你的函数看起来像这样(简化):

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

问题是,如果someConditiontrue,该函数不会返回任何内容。你可能想要做的:

return calc(x+1); 

,而不是仅仅

calc(x+1); 
相关问题