void message() { cout << "This is a recursive function. n"; message(); }該函數顯示字串 "This is a recursive function.",然後呼叫它自己。每次它呼叫自己時,迴圈都會重複。現在應該能發現該函數的問題,因為它沒有辦法停止遞回呼叫。這個函數就像一個無限迴圈,因為沒有程式碼阻止它重複。
void message(int times) { if (times > 0) { cout << "This is a recursive function.n"; message(times - 1); } }該函數包含一個控制遞回的 if 語句。只要 times 引數大於零,它將顯示訊息並再次呼叫自己。每次它呼叫自己時,都會傳遞 times-1 作為引數。例如,假設有一個程式使用以下語句來呼叫該函數:
message(3);
引數 3 將導致函數被呼叫 4 次。第一次呼叫函數時,if 語句將顯示訊息並以 2 作為引數呼叫自身,如圖 1 所示。