对于要跟踪递归函数的调用步骤,可使用可变参数##__VA_ARGS__来定义宏来输出,下面以求解Fibonacci为例说明:
1 #include <cstdio> 2 3 #define Log(level, fmt, ...) do{if(true) 4 {for(int i = 0; i < level - 1; i++) printf("--"); 5 printf(fmt"\n", ##__VA_ARGS__);} }while(false) 6 7 unsigned fibonacci(unsigned n, int level) 8 { 9 Log(level, "fibonacci(%d)", n); 10 if(n < 2) 11 return n; 12 else 13 return fibonacci(n - 1, level + 1) + fibonacci(n - 2, level + 1); 14 } 15 16 int main() 17 { 18 fibonacci(6, 1); 19 return 0; 20 }
输出结果为:
时间: 2024-10-04 22:20:53