對於要跟蹤遞歸函數的調用步驟,可以使用可變參數##__VA_ARGS__來定義宏來輸出,下面以求解Fibonacci爲例說明:ide
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 }
輸出結果爲:函數