C++ 使用递归c+最大化函数+;

C++ 使用递归c+最大化函数+;,c++,function,recursion,maximization,C++,Function,Recursion,Maximization,我试图在c++中最大化此函数: 我已将其放入函数中: int F(int n , int T ){ if( T >= 0 && n == 0){ return 0; }else if( T < 0){ return INT_MIN; } else if(T >= 0 && n > 0){ for(int i = 0 ; i <= m[n-1] ; i++){

我试图在c++中最大化此函数:

我已将其放入函数中:

int F(int n , int T ){

  if( T >= 0  &&  n == 0){

      return 0;

  }else if( T < 0){

      return INT_MIN;

  } else if(T >= 0  &&  n > 0){

      for(int i = 0 ; i <= m[n-1] ; i++){

       ganancia = max(i * v[n-1] + F(n-1,T-i*t[n-1]),ganancia );

      }

  }

}
intf(intn,intt){
如果(T>=0&&n==0){
返回0;
}else如果(T<0){
返回INT_MIN;
}else如果(T>=0&&n>0){

对于(int i=0;i函数中有三个分支,但只有两个返回值。如果无法返回值,则将有未定义的行为。您需要从所有分支返回值。

现在,我的代码如下所示:

int F(int n , int T ){

  if( T >= 0  &&  n == 0){

      return 0;

  }else if( T < 0){

      return INT_MIN;

  } else if(T >= 0  &&  n > 0){

      for(int i = 0 ; i <= m[n-1]-1 ; i++){

       return (max(i * v[n-1] + F(n-1,T-i*t[n-1]),(i+1) * v[n-1] + F(n-1,T- (i+1)*t[n-1]) ));

      }

  }

}
intf(intn,intt){
如果(T>=0&&n==0){
返回0;
}else如果(T<0){
返回INT_MIN;
}else如果(T>=0&&n>0){

对于(int i=0;i在图片中有一个错误,第一次比较中的h是T。对不起。第二个“else if”不返回值?它必须返回整数的最小值。好的,但是代码中的return语句在哪里?有两个返回,一个用于基本情况,当返回0时,另一个用于错误情况,返回0INT_MIN.你的意思是,我必须在循环中返回一些东西吗?@quicollaresllorens不在循环中,而是在循环之后。我在循环后放置了一个返回,但程序现在显示的是81,而不是13。@quicollaresllorens,你返回的是一个值,而不仅仅是一个空的
return
语句?然后你应该在调试器中逐步检查代码,以找到它lp您找到了问题所在。还要注意,
int
是一种有符号类型,因此您需要考虑当
n
小于零时会发生什么情况,您现在不需要处理这种情况。