You are on page 1of 6

721'8&7+$1*81,9(56,7<

 )DFXOW\RI,QIRUPDWLRQ7HFKQRORJ\


PROGRAMMING METHODOLOGY
Lab 6: Recursion

 ,QWURGXFWLRQ

,QSUHYLRXVODEWXWRULDOZH
YHRUJDQL]HGRXUSURJUDPLQWRIXQFWLRQVZKLFKFDOORQHDQRWKHULQ
DGLVFLSOLQHG)RUVRPHW\SHVRISUREOHPVLW
VXVHIXOWRKDYHIXQFWLRQVFDOOWKHPVHOYHVDQGLW
V
FDOOHGDVUHFXUVLYHIXQFWLRQ,QWKLVODEWXWRULDOZH
OOFRQVLGHUWKHUHFXUVLRQFRQFHSWXDOO\ILUVWWKHQ
H[DPLQHVHYHUDOSURJUDPVFRQWDLQLQJUHFXUVLYHIXQFWLRQ

 5HFXUVLYH)XQFWLRQ

$UHFXUVLYHIXQFWLRQLVDIXQFWLRQWKDWFDOOVLWVHOIHLWKHUGLUHFWO\RULQGLUHFWO\WKURXJKDQRWKHU
IXQFWLRQ 5HFXUVLYH IXQFWLRQ NQRZV KRZ WR VROYH RQO\ WKH VLPSOHVW FDVH V  RU VRFDOOHG EDVH
FDVH V ,IWKHIXQFWLRQLVFDOOHGZLWKDEDVHFDVHWKHIXQFWLRQVLPSO\UHWXUQVDUHVXOW,IWKHIXQFWLRQ
LV FDOOHG ZLWK D PRUH FRPSOH[ SUREOHP WKH IXQFWLRQ GLYLGHV WKH SUREOHP LQWR WZR FRQFHSWXDO
SLHFHVDSLHFHWKDWWKHIXQFWLRQNQRZVKRZWRGRDQGDSLHFHWKDWLWGRHVQRWNQRZKRZWRGR,Q
WKHVHFRQGSLHFHLWFRQWDLQVWKHRULJLQDOSUREOHPEXWLQDVLPSOHURUVPDOOHUYHUVLRQ%HFDXVHWKLV
QHZSUREOHPORRNVOLNHWKHRULJLQDOSUREOHPZHFDOOLWDVUHFXUVLYHFDOO

7KHUHFXUVLRQFDOOFDQH[HFXWHLQPDQ\WLPHVVLQFHWKHIXQFWLRQNHHSVGLYLGLQJHDFKSUREOHPLQWR
WZRSLHFHV)RUWKHUHFXUVLRQFDOOWRWHUPLQDWHHDFKWLPHLWFDOOVLWVHOIZLWKDVLPSOHUYHUVLRQRI
RULJLQDOSUREOHPDQGWKLVVHTXHQFHPXVWFRQYHUJHRQWKHEDVHFDVH:KHQWKHIXQFWLRQUHFRJQL]HV
WKHEDVHFDVHLWUHWXUQVDUHVXOWWRWKHSUHYLRXVFRS\RIWKHIXQFWLRQDQGDVHTXHQFHRIUHWXUQV
HQVXHVDOOWKHZD\XSWKHOLQHXQWLOWKHRULJLQDOFDOORIWKHIXQFWLRQHYHQWXDOO\UHWXUQV WKHILQDO
UHVXOW

5HFXUVLYHO\FDOFXODWLQJIDFWRULDOV

7KHIDFWRULDORIDQRQQHJDWLYHLQWHJHUQXPEHUGHQRWHGE\QLVGHILQHGDVIROORZV

݊Ǩ ൌ ݊ ή ሺ݊ െ ͳሻ ή ሺ݊ െ ʹሻ ή ǥ ή ͳ ൌ ݊ ή ሺ݊ െ ͳሻǨ

Phuc Duong – http://it.tdt.edu.vn/~dhphuc  



721'8&7+$1*81,9(56,7<
 )DFXOW\RI,QIRUPDWLRQ7HFKQRORJ\

,Q WKH DERYH IRUPXOD WKH VHFRQG VHFWLRQ GHILQHV KRZWR FDOFXODWH IDFWRULDO RI Q LQ DQ LWHUDWLYH
YHUVLRQWKXVZHFDQXVHWKHforVWDWHPHQWDVIROORZV

float factorial = 1;
for(i = 2; i <= n; i++)
{
factorial = factorial * i;
}

)URPWKHIRUVWDWHPHQWZHFDQHDVLO\VHHWKDWHDFKWLPHWKHVWDWHPHQWLQVLGHIRUH[HFXWHVLWWDNHV
WKHODVWfactorialUHVXOWDQGPXOWLSO\ZLWKWKHQHZiYDOXHWKXVZHFDQGHILQHWKHIDFWRULDORI
QDVWKHWKLUGSDUWLQWKHIRUPXODWKDWLVͷǨ ൌ ͷ ‫ כ‬Ͷ ‫ ͳ כ ʹ כ ͵ כ‬ൌ ͷ ‫ כ‬ͶǨ ൌ ͳʹͲ7KHHYDOXDWLRQRI
ͷǨZRXOGSURFHHGDVLQ)LJXUHLQWKHOHIWILJXUHWKHUHFXUVLYHFDOOH[HFXWHVXQWLOͳǨDQGLWUHWXUQV
 WKHEDVHFDVH DQGWHUPLQDWHWKHUHFXUVLRQ,QWKHOHIWILJXUHLWVKRZVWKHYDOXHVUHWXUQHGIURP
HDFKUHFXUVLYHFDOOWRLWVFDOOHUXQWLOWKHILQDOYDOXHLVFDOFXODWHGDQGUHWXUQHG


)LJXUH5HFXUVLYHHYDOXDWLRQRI

7KHSURJUDPEHORZZLOOLOOXVWUDWHKRZWRSURJUDPDUHFXUVLYHIXQFWLRQ

 

Phuc Duong – http://it.tdt.edu.vn/~dhphuc  



721'8&7+$1*81,9(56,7<
 )DFXOW\RI,QIRUPDWLRQ7HFKQRORJ\

1 #include <stdio.h>
2
3 float getFactorial(int);
4
5 int main()
6 {
7 int n = 5;
8 printf("Factorial(%d) = %f", n, getFactorial(n));
9
10 return 0;
11 }
12
13 float getFactorial(int n)
14 {
15 if(n == 0 || n == 1) return 1;
16 return n * getFactorial(n - 1);
17 }

)LERQDFFLVHULHV

7KH )LERQDFFL VHULHV EHJLQV ZLWK  DQG DQGKDV WKHSURSHUW\WKDW HDFKVXEVHTXHQW )LERQDFFL
QXPEHULVWKHVXPRIWKHSUHYLRXVWZR)LERQDFFLQXPEHUV7KH)LERQDFFLVHULHVPD\EHGHILQHG
UHFXUVLYHO\DVIROORZV

݂ܾ݅‫݅ܿܿܽ݊݋‬ሺͲሻ ൌ Ͳ
݂ܾ݅‫݅ܿܿܽ݊݋‬ሺͳሻ ൌ ͳ
݂ܾ݅‫݅ܿܿܽ݊݋‬ሺ݊ሻ ൌ ݂ܾ݅‫݅ܿܿܽ݊݋‬ሺ݊ െ ͳሻ ൅ ݂ܾ݅‫݅ܿܿܽ݊݋‬ሺ݊ െ ʹሻ

)URP WKH DERYH IRUPXOD FDOFXODWHV WKH QWK )LERQDFFL QXPEHU UHFXUVLYHO\ XVLQJ IXQFWLRQ
fibonacci1RWLFHWKDW)LERQDFFLQXPEHUVWHQGWREHFRPHODUJHTXLFNO\WKXVZHFKRRVHGDWD
W\SHfloatIRUWKHSDUDPHWHUW\SHDQGWKHUHWXUQW\SHDOVR
1 #include <stdio.h>
2
3 float fibonacci(float);
4
5 int main()
6 {
7 int n = 10;
8 printf("Factorial(%d) = %f", n, fibonacci(n));
9
10 return 0;
11 }
12
13 float fibonacci(float n)
14 {
15 if(n == 0) return 0;
16 if(n == 1) return 1;
17 return fibonacci(n-1) + fibonacci(n-2);
18 }

Phuc Duong – http://it.tdt.edu.vn/~dhphuc  



721'8&7+$1*81,9(56,7<
 )DFXOW\RI,QIRUPDWLRQ7HFKQRORJ\

(DFKWLPHfibonacciLVLQYRNHGLWLPPHGLDWHO\WHVWVIRUWKHEDVHFDVH±QLVHTXDOWRRU,I
WKLV LV WUXH Q LV UHWXUQHG ,QWHUHVWLQJO\ LI Q LV JUHDWHU WKDQ  WKH UHFXUVLRQ VWHS JHQHUDWHV WZR
UHFXUVLYHFDOOVHDFKDVOLJKWO\VLPSOHUSUREOHP WKDQWKHRULJLQDOFDOOWR fibonacci )LJXUH 
VKRZVKRZIXQFWLRQfibonacciHYDOXDWHVZKHQQ 


)LJXUH(YDOXDWLQJILERQDFFL  

 5HFXUVLRQYV,WHUDWLRQ

:HKDYHVWXGLHGWZRNLQGRIIXQFWLRQVZKLFKLPSOHPHQWHGLQHLWKHUUHFXUVLYHRULWHUDWLYHO\,Q
WKLVVHFWLRQZHFRPSDUHWKHWZRDSSURDFKHVDQGGLVFXVVZK\\RXPLJKWFKRRVHRQHDSSURDFKRYHU
WKHRWKHULQDSDUWLFXODUVLWXDWLRQ

 %RWK LWHUDWLRQDQGUHFXUVLRQ DUHEDVHGRQ DFRQWURO VWUXFWXUH ,WHUDWLRQXVHVDUHSHWLWLRQ


VWUXFWXUHUHFXUVLRQXVHVDVHOHFWLRQVWUXFWXUH
 %RWK LWHUDWLRQ DQG UHFXUVLRQ LQYROYH UHSHWLWLRQ ,WHUDWLRQ H[SOLFLWO\ XVHV D UHSHWLWLRQ
VWDWHPHQWUHFXUVLRQDFKLHYHVUHSHWLWLRQWKURXJKUHSHDWHGIXQFWLRQFDOOV
 ,WHUDWLRQDQGUHFXUVLRQHDFKLQYROYHDWHUPLQDWLRQWHVW,WHUDWLRQWHUPLQDWHVZKHQWKHORRS
FRQWLQXDWLRQFRQGLWLRQIDLOVUHFXUVLRQZKHQDEDVHFDVHLVUHFRJQL]HG
 ,WHUDWLRQ ZLWK FRXQWHUFRQWUROOHG UHSHWLWLRQ DQG UHFXUVLRQ HDFK JUDGXDOO\ DSSURDFK
WHUPLQDWLRQ ,WHUDWLRQ NHHSV PRGLI\LQJ D FRXQWHU XQWLO WKH FRXQWHU DVVXPHV D YDOXH WKDW

Phuc Duong – http://it.tdt.edu.vn/~dhphuc  



721'8&7+$1*81,9(56,7<
 )DFXOW\RI,QIRUPDWLRQ7HFKQRORJ\

PDNHVWKHORRSFRQWLQXDWLRQFRQGLWLRQIDLOUHFXUVLRQNHHSVSURGXFLQJVLPSOHUYHUVLRQVRI
WKHRULJLQDOSUREOHPXQWLOWKHEDVHFDVHLVUHDFKHG
 %RWKLWHUDWLRQDQGUHFXUVLRQFDQRFFXULQILQLWHO\$QLQILQLWHORRSRFFXUVZLWKLWHUDWLRQLI
WKHORRSFRQWLQXDWLRQWHVWQHYHUEHFRPHVIDOVHLQILQLWHUHFXUVLRQRFFXUVLIWKHUHFXUVLRQ
VWHSGRHVQRWUHGXFHWKHSUREOHPHDFKWLPHLQDPDQQHUWKDWFRQYHUJHVRQWKHEDVHFDVH

5HFXUVLRQ KDV PDQ\ QHJDWLYHV ,W UHSHDWHGO\ LQYRNHV WKH PHFKDQLVP DQG FRQVHTXHQWO\ WKH
RYHUKHDGRIIXQFWLRQFDOOV7KLVFDQEHH[SHQVLYHLQERWKSURFHVVRUWLPHDQGPHPRU\VSDFH(DFK
UHFXUVLYHFDOOFDXVHVDQRWKHUFRS\RIWKHIXQFWLRQ RQO\WKHIXQFWLRQ
VYDULDEOHV WREHFUHDWHGWKLV
FDQFRQVXPHFRQVLGHUDEOHPHPRU\,WHUDWLRQQRUPDOO\RFFXUVZLWKLQDIXQFWLRQVRWKHRYHUKHDG
RIUHSHDWHGIXQFWLRQFDOOVDQGH[WUDPHPRU\DVVLJQPHQWLVRPLWWHG

 ([HUFLVHV

 'HILQHDUHFXUVLYHIXQFWLRQWKDWFKHFNZKHWKHUDQXPEHULVSULPH

 'HILQHDUHFXUVLYHIXQFWLRQWRFRPSXWHIDFWRULDORIQ

 'HILQHDUHFXUVLYHIXQFWLRQWRFRPSXWHQ

 'HILQHDUHFXUVLYHIXQFWLRQWRFRPSXWH[Q

 'HILQHDUHFXUVLYHIXQFWLRQWRUHWXUQWKHQXPEHURIGLJLWVRIDSRVLWLYHLQWHJHUQXPEHU

 'HILQHDUHFXUVLYHIXQFWLRQWRFDOFXODWHWKHIROORZLQJH[SUHVVLRQV

D σ௡௜ୀଵሺʹ݅ ൅ ͳሻ



E σ௡௜ୀଵ ଶ

F σ௡௜ୀଵ ݅Ǩ

G σ௡௜ୀଵ ξ݅ 

H ς௡௜ୀଵ ݅Ǩ

 5HIHUHQFH

>@ %ULDQ:.HUQLJKDQ 'HQQLV5LWFKLH  &3URJUDPPLQJ/DQJXDJHQG(GLWLRQ


3UHQWLFH+DOO

Phuc Duong – http://it.tdt.edu.vn/~dhphuc  



721'8&7+$1*81,9(56,7<
 )DFXOW\RI,QIRUPDWLRQ7HFKQRORJ\

>@ 3DXO'HLWHO +DUYH\'HLWHO  &+RZWR3URJUDPWK(GLWLRQ3UHQWLFH+DOO
>@ &3URJUDPPLQJ7XWRULDO  7XWRULDOV3RLQW
>@ &3URJUDPPLQJ  :LNLERRNV

Phuc Duong – http://it.tdt.edu.vn/~dhphuc  




You might also like