[STUPMACH] What's wrong in my recursion solution?

#include <bits/stdc++.h>
using namespace std;
#define ll long long

ll totalTokens{};

ll recursion(ll capacity[], int n){

int smallest_address=INT_MAX;
ll smallest_capacity=INT_MAX;

if(n==0) //base case
{
return totalTokens+capacity[0];
}

for(int i=0; i<n; i++)
{
if(capacity[i]<smallest_capacity){
smallest_capacity=capacity[i];
smallest_address=i;
}
}

for(int i=0; i<n; i++)
{
capacity[i]=capacity[i]-smallest_capacity;
}
totalTokens=totalTokens+n*smallest_capacity; //size of var = S(i)*n

recursion(capacity,smallest_address);

}

int32_t main()
{
ios_base::sync_with_stdio(false);
cin.tie(NULL);
//your code goes here

int t; cin>>t;
while(t–){
int n; cin>>n;
ll capacity[n]{};
for(int i=0; i<n; i++)
cin>>capacity[i];

cout<<recursion(capacity,n)<<endl;

}

return 0;
}