使用递归 C++ 最大化函数
maximize a function with recursion c++
我试图在 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 );
}
}
}
但是当我输入 n 3 , T 8, t {1, 2, 2}, v {12, 15, 30} 最后输入 m{3, 3, 2} 我的程序 return 2、当它得return 99.
函数中有三个分支,但只有两个 return 值。如果您未能 return 一个值,您将有 未定义的行为 。您需要 return 来自所有分支的值。
现在我的代码是这样的:
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]) ));
}
}
}
现在它显示我的程序 12 而不是 13,至少我保留了那个 2 值。谢谢!
我试图在 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 );
}
}
}
但是当我输入 n 3 , T 8, t {1, 2, 2}, v {12, 15, 30} 最后输入 m{3, 3, 2} 我的程序 return 2、当它得return 99.
函数中有三个分支,但只有两个 return 值。如果您未能 return 一个值,您将有 未定义的行为 。您需要 return 来自所有分支的值。
现在我的代码是这样的:
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]) ));
}
}
}
现在它显示我的程序 12 而不是 13,至少我保留了那个 2 值。谢谢!