一个计算递归的时间复杂度的有关问题哈

请教大家一个计算递归的时间复杂度的问题哈
void AddToSumCore(int *Array,int len,int start,int Sum,int Tmpsum,vector<int> &V)
{
if(Sum==Tmpsum)
{
Count++;
vector<int>::iterator ite;
for(ite=V.begin();ite!=V.end();ite++)
cout<<*ite<<"-";
cout<<endl;
return;
}
else if( Sum<Tmpsum)
return;

for(int i=start;i<len;i++)
{
V.push_back(Array[i]);
AddToSumCore(Array,len,i,Sum,Tmpsum+Array[i],V);
V.pop_back();
}
}
void AddToSum(int sum)
{
int Array[]={1,2,5,10,20,50,100};
vector<int> V;
AddToSumCore(Array,7,0,sum,0,V);
}

现在要分析AddToSum的时间复杂度,这个该怎么分析呢?请教一下大家~~~不甚感激
------解决思路----------------------
递归次数*for循环*for循环

时间复杂度为
O(N^3)
------解决思路----------------------
你这递归本身都指数级了。纠结几个for有啥意义
------解决思路----------------------
无profiler不要谈效率!!尤其在这个云计算、虚拟机、模拟器、CUDA、多核 、多级cache、指令流水线、多种存储介质、……满天飞的时代!

------解决思路----------------------
“给定一个小点的输入,完整单步跟踪(同时按Alt+7键查看Call Stack里面从上到下列出的对应从里层到外层的函数调用历史)一遍。”是理解递归函数工作原理的不二法门!
递归函数关注以下几个因素
·退出条件
·参数有哪些
·返回值是什么
·局部变量有哪些
·全局变量有哪些
·何时输出
·会不会导致堆栈溢出