//将递归转化为for循环看例子
将递归转为for循环需要求解递归关系,知道递归关系后就可以使用循环来实现。
如下示例 求解后知//f(n) = n * f(n - 1);
代码详解如下:
/** 求阶乘 */
int factorial(int n){
static int calculateCount = 0;
printf("calculate count is %d\n", calculateCount++);
if (n <= 1) {
return n;
}else{
return n * factorial(n - 1);
}
}
/** 求阶乘For循环来实现 */
int factorialFor(int n){
int result = 1;
for (int i = 1; i <= n; i++) {
result = result * i;
static int calculateCount = 0;
printf("calculate count is %d\n", calculateCount++);
}
return result;
}