看板 ACMCLUB 關於我們 聯絡資訊
※ [本文轉錄自 b97902HW 看板] 作者: silentvow (沉沒) 看板: b97902HW 標題: [計程] 遞迴的常見錯誤 時間: Mon Oct 13 23:25:34 2008 這是一份簡單合法並使用遞迴的程式碼,以下是常見的錯誤情況。 #include <stdio.h> int func(int a){ if(a==0) return 0; return func(a-1) + 1; } void main(){ int n; scanf("%d", &n); printf("%d\n", func(n)); } 前面的,小抄傳過來 (振筆疾書) \ \ ● ● ● ● \\ // // // // 1. 沒有回傳值 #include <stdio.h> int func(int a){ if(a==0) return 0; func(a-1) + 1; } void main(){ int n; scanf("%d", &n); printf("%d\n", func(n)); } 居然給我白紙 ... \ \ ● ● ● ● \\ // // // // 2. 沒有基底或結束條件 #include <stdio.h> int func(int a){ return func(a-1) + 1; } void main(){ int n; scanf("%d", &n); printf("%d\n", func(n)); } 幹沒帶啦 前面的不借我就舉發你 / \ \ ● ● ● ● \\ // // // // 3. 遞迴傳入值錯誤 #include <stdio.h> int func(int a){ if(a==0) return 0; return func(a+1) + 1; } void main(){ int n; scanf("%d", &n); printf("%d\n", func(n)); } 拎北是牆壁啦 \ 後面的,小抄傳過來 | \ | \ ● ● ● ● | \\ // // // // | 4. 使用在不同函式內宣告的變數 #include <stdio.h> int func(int a){ if(a==0) return 0; return func(n-1) + 1; } void main(){ int n; scanf("%d", &n); printf("%d\n", func(n)); } 這小抄是用哪國語言寫的 ... \ \ ● ● ● ● \\ // // // // 5. 宣告和全域變數相同名稱的變數 #include <stdio.h> int a; int func(int a){ if(a==0) return 0; return func(a-1) + 1; } void main(){ int n; scanf("%d", &n); printf("%d\n", func(n)); } 怎麼有筆跡不一致的兩種答案?! \ \ ● ● ● ● \\ // // // // 6. 基底不正確 #include <stdio.h> int func(int a){ if(a==0) return -1; return func(a-1) + 1; } void main(){ int n; scanf("%d", &n); printf("%d\n", func(n)); } 真蠢,沒發現那是上一章的小抄 / (埋頭狂寫) \ ● ● ● ● \\ // // // // 7. 溢位 #include <stdio.h> int func(int a){ if(a==0) return 0; return func(a-1) + 1; } void main(){ printf("%d\n", func(2147483647)); } 屁啦 ... 哪來這麼多人 \ ● ● ● ● ● ● ● ● ● ● // // // // // // // // // // 寫程式碼出錯是常有的事,找出並修正它才會有所成長。 現在放棄的話,比賽就結束了。 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 140.112.240.15
lmr3796:淚推最後兩行,太感人啦!!! 10/13 23:31
anfranion:大推一個! 10/13 23:32
dennis2030:這圖真的是畫的太棒了 又很容易懂XD 10/13 23:33
ming1053:太好笑啦XDD 10/13 23:43
godgunman:水啦 10/13 23:49
lockercho:笑倒XDDDD 10/13 23:52
vanillaXleft:好笑+1 明白+1 10/13 23:55
weijer0905:大推!!! 好笑+1 易懂+1 10/13 23:56
LoganChien:大推!!! 10/14 00:00
chenaren:太強惹吧 10/14 00:07
sa072686: 大推!!! 和全域撞名沒關係,會優先取區域的用 10/14 00:09
matt7983:有笑有推XDDDDDD 10/14 00:11
iForests:太北七了 XDDDDD 10/14 00:11
gaga19900329:XDDDDDDD 10/14 00:12
hrs113355:大推XDDDDDDDDDD 10/14 00:15
fishead1116:XDDDDDDDDDDDD 10/14 00:16
clywin123:太勁爆了XDDDDDD 10/14 00:35
jyt0532:看到後面才發現下面的圖跟那點是有關聯的 推一個 10/14 00:44
benck:推一個 10/14 00:45
pangfeng:推強大的圖. 10/14 09:23
telgniw:好生動XD 10/14 09:24
pangfeng:借轉. 10/14 09:27
strangechu:XDDDDDDDDD 10/14 09:27
-- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 140.112.30.84