[轉錄][計程] 遞迴的常見錯誤

作者: pangfeng (Ikari Gendou)   2008-10-14 10:25:59
※ [本文轉錄自 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//▆
寫程式碼出錯是常有的事,找出並修正它才會有所成長。
現在放棄的話,比賽就結束了。
作者: lmr3796 (Toro)   0000-00-00 00:00:00
淚推最後兩行,太感人啦!!!
作者: anfranion (南‧生命的意義是經歷)   0000-00-00 00:00:00
大推一個!
作者: dennis2030 (綠豆)   0000-00-00 00:00:00
這圖真的是畫的太棒了 又很容易懂XD
作者: ming1053 (ming)   0000-00-00 00:00:00
太好笑啦XDD
作者: godgunman (its嘎嘎麵)   0000-00-00 00:00:00
水啦
作者: lockercho (拉顆邱)   0000-00-00 00:00:00
笑倒XDDDD
作者: vanillaXleft   0000-00-00 00:00:00
好笑+1 明白+1
作者: weijer0905 ( )   0000-00-00 00:00:00
大推!!! 好笑+1 易懂+1
作者: LoganChien (簡子翔)   0000-00-00 00:00:00
大推!!!
作者: chenaren (′˙ω˙‵)   0000-00-00 00:00:00
太強惹吧
作者: sa072686 (小紅)   0000-00-00 00:00:00
大推!!! 和全域撞名沒關係,會優先取區域的用
作者: matt7983 (耍肥)   0000-00-00 00:00:00
有笑有推XDDDDDD
作者: iForests (森林)   0000-00-00 00:00:00
太北七了 XDDDDD
作者: gaga19900329 (GagaKnight)   0000-00-00 00:00:00
XDDDDDDD
作者: hrs113355 (小分分)   0000-00-00 00:00:00
大推XDDDDDDDDDD
作者: fishead1116 (DD魚)   0000-00-00 00:00:00
XDDDDDDDDDDDD
作者: clywin123 (*0)   0000-00-00 00:00:00
太勁爆了XDDDDDD
作者: jyt0532 (J)   0000-00-00 00:00:00
看到後面才發現下面的圖跟那點是有關聯的 推一個
作者: benck (小倫)   0000-00-00 00:00:00
推一個
作者: pangfeng (Ikari Gendou)   0000-00-00 00:00:00
推強大的圖.
作者: telgniw (易)   0000-00-00 00:00:00
好生動XD
作者: pangfeng (Ikari Gendou)   0000-00-00 00:00:00
借轉.
作者: strangechu (電冰箱)   0000-00-00 00:00:00
XDDDDDDDDD

Links booklink

Contact Us: admin [ a t ] ucptt.com