return lres+rres+depth*b[mink],这段代码怎么理解?lres和rres好像本来就求不出值

1 #include
2 using namespace std;
3 const int maxn=10000;
4 int n;
5 int a[maxn];
6 int b[maxn];
7 int f(int l,int r,int depth){
8 if(l>r)
9 return 0;
10 int min=maxn,mink;
11 for(int i=1;i<=r;++i){
12 if(min>a[i]){
13 min=a[i];
14 mink=i;
15 }
16 }
17 int lres=f(l,mink-1,depth+1);
18 int rres=f(mink+l,r,depth+1);
19 return lres+rres+depth*b[mink];
20 }
21 int main(){
22 cin>>n;
23 for(int i=0;i<n;++i)
24 cin>>a[i];
25 for(int i=0;i<n;++i)
26 cin>>b[i];
27 cout<<f(0,n-1,1)<<endl;
28 return 0;
29 }

这个是递归