/**************************
*功能:高效 debug 递归算法,直接在递归函数内部打印关键值,配合缩进,直观地观察递归函数执行情况
*使用方法:在递归函数的开头,调用 printIndent(count++) 并打印关键变量;然后在所有 return 语句之前调用 printIndent(--count) 并打印返回值。
*************************/
#include<stdio.h>
//全局变量,记录递归函数的递归层数
int count = 0;
//输入n,打印n个tab 缩进
void printIndent(int n) {
for (int i = 0; i < n; i++) {
printf("\t");
}
}
int fact(int n) {
int res;
printIndent(count++);
printf("n = %d\n",n);
if (n == 1) {
printIndent(--count);
printf("return 1\n");
return 1;
}
res = n * fact(n - 1);
printIndent(--count);
printf("return %d\n", res);
return res;
}
int main() {
int res;
res=fact(5);
printf("result=:%d\n", res);
return 0;
}