作者pangfeng (Ikari Gendou)
看板ACMCLUB
標題[轉錄][計程] 遞迴的常見錯誤
時間Tue Oct 14 10:25:59 2008
※ [本文轉錄自 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));
} 前面的,小抄傳過來
● (振筆疾書) \
║\ ◥ ● ● ● ●
▆\\ ︻︶
║ ︻︶
║ ︻︶
║ ︻︶
║
H//
▆ H//
▆ H//
▆ H//
▆
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));
}
居然給我白紙 ...
● \
║\ ◥ ● ● ● ●
▆\\ ︻︶
║ ︻︶
║ ︻︶
║ ︻︶
║
H//
▆ H//
▆ H//
▆ H//
▆
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));
}
幹沒帶啦 前面的不借我就舉發你
● / \
║\ ◥ ● ● ● ●
▆\\ ︻︶
║ ︻︶
║ ︻︶
║ ︻︶
║
H//
▆ H//
▆ H//
▆ H//
▆
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));
}
拎北是牆壁啦
\
後面的,小抄傳過來 |
● \ |
║\ ◥ ● ● ● ● |
▆\\ ︻︶
║ ︻︶
║ ︻︶
║ ︻︶
║ |
H//
▆ H//
▆ H//
▆ H//
▆ |
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));
}
這小抄是用哪國語言寫的 ...
● \
║\ ◥ ● ● ● ●
▆\\ ︻︶
║ ︻︶
║ ︻︶
║ ︻︶
║
H//
▆ H//
▆ H//
▆ H//
▆
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));
}
怎麼有筆跡不一致的兩種答案?!
● \
║\ ◥ ● ● ● ●
▆\\ ︻︶
║ ︻︶
║ ︻︶
║ ︻︶
║
H//
▆ H//
▆ H//
▆ H//
▆
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));
}
真蠢,沒發現那是上一章的小抄
● / (埋頭狂寫)
║\ ◥ ● ● ● ●
▆\\ ︻︶
║ ︻︶
║ ︻︶
║ ︻︶
║
H//
▆ H//
▆ H//
▆ H//
▆
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));
}
屁啦 ... 哪來這麼多人
\
● ● ● ● ● ● ● ● ● ●
︻︶
║︻︶
║︻︶
║︻︶
║︻︶
║︻︶
║︻︶
║︻︶
║︻︶
║︻︶
║
H//
▆ H//
▆ H//
▆ H//
▆ H//
▆ H//
▆ H//
▆ H//
▆ H//
▆ H//
▆
寫程式碼出錯是常有的事,找出並修正它才會有所成長。
現在放棄的話,比賽就結束了。
--
※ 發信站: 批踢踢實業坊(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