这是用于查找最大子向量和的递归代码
#include <iostream>
using namespace std;
int Max(int a,int b,int c){
return max(a,std::max(b,c));
}
int a[]={31,-41,59,26,-53,58,97,-93,-23,84};
int n=sizeof(a)/sizeof(int);
int maximum3(int l,int u){
if (l>u) return 0;
if (l==u) return std::max(0,a[l]);
int m=(l+u)/2;
int lmax=0;
int sum=0;
int rmax=0;
int sum1=0;
for (int i=m;i>=l;i--){
sum+=a[i];
lmax=std::max(lmax,sum);
}
for (int j=m+1;j<u;j++){
sum1+=a[j];
rmax=std::max(rmax,sum);
}
return Max(lmax+rmax,maximum3(l,m),maximum3(m+1,u));
}
int main(){
cout<<maximum3(0,n-1)<<" ";
return 0;
}
Run Code Online (Sandbox Code Playgroud)
它重新运行155而其他非递归方法返回187请帮助
@ user466411:您在过去7个月内提出了274个问题,或者每天都提出大约一个问题.其中许多问题已经[已结束],获得了严重的负面投票[-5或更多],或两者兼而有之.
这种模式清楚地表明:
你需要重新思考如何处理编程.
总而言之,你编程错了.
大多数新程序员可以在不到7个月的时间内掌握初级编程,而无需每天手持.你需要重新编程,学习新的如何思考代码,或者你需要承认编程不适合你,你应该找到一个新的工作线.
(对于其他评论者:是的,我知道这个答案对这个问题没有回应,但是迫切需要说;请看我的另一篇文章,以获得响应性答案,试图引导海报找到解决方案)