原帖代碼:#include #include #include float A(float m,float n){...} void main (){cout
**四大缺失**:頭文件不全、代碼截斷、無錯誤信息、無預期/實際行為描述。
// 1. 完整可編譯(含 main、頭文件)
#include
// 2. 最小復現邏輯(刪除無關代碼)
float A(float m, float n) {
if (m == 0) return n + 1;
if (n == 0) return A(m - 1, 1);
return A(m - 1, A(m, n - 1));
}
int main() {
// 3. 具體輸入
float m = 1, n = 2;
// 4. 實際輸出
printf("A(%.0f, %.0f) = %.0f\n", m, n, A(m, n));
// 5. 預期輸出 + 錯誤現象
// 預期: 4, 實際: Segmentation fault (棧溢出)
return 0;
}
## 環境
- OS: Ubuntu 22.04 / Windows 11
- 編譯器: gcc 11.3 / MSVC 19.3
- 編譯命令: gcc -Wall -Wextra -std=c11 -g test.c -o test
## 代碼 (MCVE)
```c
// 貼上完整可編譯代碼
```
## 預期行為
- 輸入: ...
- 輸出: ...
## 實際行為
- 編譯錯誤: (貼完整錯誤信息)
- 運行崩潰: Segmentation fault at line XX
- 邏輯錯誤: 得到 X,期望 Y
## 已嘗試
- 加了 printf 調試,發現變量 x 在第 Y 行變為 ...
- 用 GDB bt 看到棧帧 ...
- 查閱文檔/書 PXX,未找到答案
## 疑問點
- 為什麼這裡會...?
- 應該怎麼修改才能...?
cpp、縮進統一、關鍵行加註釋。| 反模式 | 後果 | 修正 |
|---|---|---|
| 「代碼太長不貼了」 | 無法復現,直接忽略 | 提取 MCVE |
| 「報錯了」不貼錯誤信息 | 盲人摸象,猜測成本高 | 貼完整 stderr |
| 「怎麼寫這個功能?」無代碼 | 被視為伸手黨,回復質量低 | 貼已有嘗試代碼 |
| 貼圖片代替代碼文本 | 無法複製編譯,手機難讀 | 文本代碼塊 |
| 混雜多個問題 | 回答者不知從何入手 | 拆分多個帖子 |