因为做算法题的时候经常碰到递归的方法,而每次理解递归代码的层次结构都很费脑筋,所以我尝试着总结分析了一下递归代码的结构,如果有误还望大家指明。
类型 函数名(参数){
跳出递归的条件
相关参数设置
开始递归调用函数
得到下一层递归的结果用于计算.. 这一部分看具体情况可有可无
}
//看一段代码,用递归的方法求一个数的n次方
/*
函数功能:求x的n次方
函数参数:base是底数,exponent是指数
*/
double Power(double base, unsigned int exponent){
if(exponent==0)
return 1;
if(exponent==1)
return base;
double result =Power(base,exponent>>1);
result *=result;
if(exponent & 0x1 ==1)
result *=base;
return result;
}
由于不太好用文字描述,所以我用笔画个图分析给大家看吧。
递归到最后一层时,还会再进入一次函数,通过这次进入函数来停止递归,开始往上层返回数据。