T a i l r e c u r s i o n ( n o t o n e x a m - - PowerPoint PPT Presentation

t a i l r e c u r s i o n n o t o n e x a m h o w i s r e
SMART_READER_LITE
LIVE PREVIEW

T a i l r e c u r s i o n ( n o t o n e x a m - - PowerPoint PPT Presentation

T a i l r e c u r s i o n ( n o t o n e x a m ) H o w i s r e c u r s i o n i m p l e m e n t e d ? Wh e n y o u c a l l f u n c t i o n B f r o m f u n c t i o n A ,


slide-1
SLIDE 1

T a i l r e c u r s i

  • n

( n

  • t
  • n

e x a m )

slide-2
SLIDE 2

H

  • w

i s r e c u r s i

  • n

i m p l e m e n t e d ?

Wh e n y

  • u

c a l l f u n c t i

  • n

B f r

  • m

f u n c t i

  • n

A , t h e p r

  • c

e s s

  • r

s t

  • p

s e x e c u t i n g A a n d s t a r t s e x e c u t i n g B (

  • b

v i

  • u

s l y ) B u t w h e n B r e t u r n s , h

  • w

d

  • e

s i t k n

  • w

h

  • w

t

  • g
  • b

a c k t

  • A

? A n s w e r : t h e c a l l s t a c k

  • B

e f

  • r

e A c a l l s B , i t w i l l p u s h a r e c

  • r

d

  • f

w h a t i t w a s d

  • i

n g : t h e n e x t i n s t r u c t i

  • n

t

  • b

e e x e c u t e d , p l u s t h e v a l u e s

  • f

a l l l

  • c

a l v a r i a b l e s

  • Wh

e n B r e t u r n s , i t w i l l p

  • p

t h a t r e c

  • r

d a n d s e e i t s h

  • u

l d r e t u r n t

  • A
slide-3
SLIDE 3

A r e c u r s i v e f u n c t i

  • n

1 v

  • i

d r e c ( i n t n ) { 2 i f ( n > ) { 3 S y s t e m .

  • u

t . p r i n t l n ( n ) ; 4 r e c ( n

  • 1

) ; 5 r e c ( n

  • 1

) ; 6 } 7 } r e c ( 3 ) ;

n = 3

N e x t l i n e V a l u e

  • f

n

slide-4
SLIDE 4

A r e c u r s i v e f u n c t i

  • n

1 v

  • i

d r e c ( i n t n ) { 2 i f ( n > ) { 3 S y s t e m .

  • u

t . p r i n t l n ( n ) ; 4 r e c ( n

  • 1

) ; 5 r e c ( n

  • 1

) ; 6 } 7 } r e c ( 3 ) ;

n = 3

N e x t l i n e V a l u e

  • f

n

slide-5
SLIDE 5

A r e c u r s i v e f u n c t i

  • n

1 v

  • i

d r e c ( i n t n ) { 2 i f ( n > ) { 3 S y s t e m .

  • u

t . p r i n t l n ( n ) ; 4 r e c ( n

  • 1

) ; 5 r e c ( n

  • 1

) ; 6 } 7 } r e c ( 3 ) ;

n = 3

P r i n t e d : 3

N e x t l i n e V a l u e

  • f

n

P r i n t s 3

slide-6
SLIDE 6

A r e c u r s i v e f u n c t i

  • n

1 v

  • i

d r e c ( i n t n ) { 2 i f ( n > ) { 3 S y s t e m .

  • u

t . p r i n t l n ( n ) ; 4 r e c ( n

  • 1

) ; 5 r e c ( n

  • 1

) ; 6 } 7 } r e c ( 3 ) ;

n = 3

P r i n t e d : 3

N e x t l i n e V a l u e

  • f

n

P u s h s t a t e

  • n

t

  • c

a l l s t a c k

slide-7
SLIDE 7

A r e c u r s i v e f u n c t i

  • n

1 v

  • i

d r e c ( i n t n ) { 2 i f ( n > ) { 3 S y s t e m .

  • u

t . p r i n t l n ( n ) ; 4 r e c ( n

  • 1

) ; 5 r e c ( n

  • 1

) ; 6 } 7 } r e c ( 3 ) ;

n = 2

P r i n t e d : 3

N e x t l i n e V a l u e

  • f

n

5 3

slide-8
SLIDE 8

A r e c u r s i v e f u n c t i

  • n

1 v

  • i

d r e c ( i n t n ) { 2 i f ( n > ) { 3 S y s t e m .

  • u

t . p r i n t l n ( n ) ; 4 r e c ( n

  • 1

) ; 5 r e c ( n

  • 1

) ; 6 } 7 } r e c ( 3 ) ;

n = 2

P r i n t e d : 3 2

N e x t l i n e V a l u e

  • f

n

5 3 P r i n t s 2

slide-9
SLIDE 9

A r e c u r s i v e f u n c t i

  • n

1 v

  • i

d r e c ( i n t n ) { 2 i f ( n > ) { 3 S y s t e m .

  • u

t . p r i n t l n ( n ) ; 4 r e c ( n

  • 1

) ; 5 r e c ( n

  • 1

) ; 6 } 7 } r e c ( 3 ) ;

n = 2

P r i n t e d : 3 2

N e x t l i n e V a l u e

  • f

n

5 3

P u s h s t a t e

  • n

t

  • c

a l l s t a c k

slide-10
SLIDE 10

A r e c u r s i v e f u n c t i

  • n

1 v

  • i

d r e c ( i n t n ) { 2 i f ( n > ) { 3 S y s t e m .

  • u

t . p r i n t l n ( n ) ; 4 r e c ( n

  • 1

) ; 5 r e c ( n

  • 1

) ; 6 } 7 } r e c ( 3 ) ;

n = 1

P r i n t e d : 3 2

N e x t l i n e V a l u e

  • f

n

5 3 5 2

slide-11
SLIDE 11

A r e c u r s i v e f u n c t i

  • n

1 v

  • i

d r e c ( i n t n ) { 2 i f ( n > ) { 3 S y s t e m .

  • u

t . p r i n t l n ( n ) ; 4 r e c ( n

  • 1

) ; 5 r e c ( n

  • 1

) ; 6 } 7 } r e c ( 3 ) ;

n = 1

P r i n t e d : 3 2 1

N e x t l i n e V a l u e

  • f

n

5 3 5 2 P r i n t s 1

slide-12
SLIDE 12

A r e c u r s i v e f u n c t i

  • n

1 v

  • i

d r e c ( i n t n ) { 2 i f ( n > ) { 3 S y s t e m .

  • u

t . p r i n t l n ( n ) ; 4 r e c ( n

  • 1

) ; 5 r e c ( n

  • 1

) ; 6 } 7 } r e c ( 3 ) ;

n = 1

P r i n t e d : 3 2 1

N e x t l i n e V a l u e

  • f

n

5 3 5 2

P u s h s t a t e

  • n

t

  • c

a l l s t a c k

slide-13
SLIDE 13

A r e c u r s i v e f u n c t i

  • n

1 v

  • i

d r e c ( i n t n ) { 2 i f ( n > ) { 3 S y s t e m .

  • u

t . p r i n t l n ( n ) ; 4 r e c ( n

  • 1

) ; 5 r e c ( n

  • 1

) ; 6 } 7 } r e c ( 3 ) ;

n =

P r i n t e d : 3 2 1

N e x t l i n e V a l u e

  • f

n

5 3 5 2 5 1

slide-14
SLIDE 14

A r e c u r s i v e f u n c t i

  • n

1 v

  • i

d r e c ( i n t n ) { 2 i f ( n > ) { 3 S y s t e m .

  • u

t . p r i n t l n ( n ) ; 4 r e c ( n

  • 1

) ; 5 r e c ( n

  • 1

) ; 6 } 7 } r e c ( 3 ) ;

n =

P r i n t e d : 3 2 1

N e x t l i n e V a l u e

  • f

n

5 3 5 2 5 1

P

  • p

s t a t e f r

  • m

c a l l s t a c k

slide-15
SLIDE 15

A r e c u r s i v e f u n c t i

  • n

1 v

  • i

d r e c ( i n t n ) { 2 i f ( n > ) { 3 S y s t e m .

  • u

t . p r i n t l n ( n ) ; 4 r e c ( n

  • 1

) ; 5 r e c ( n

  • 1

) ; 6 } 7 } r e c ( 3 ) ;

n = 1

P r i n t e d : 3 2 1

N e x t l i n e V a l u e

  • f

n

5 3 5 2

P u s h s t a t e

  • n

t

  • c

a l l s t a c k

slide-16
SLIDE 16

A r e c u r s i v e f u n c t i

  • n

1 v

  • i

d r e c ( i n t n ) { 2 i f ( n > ) { 3 S y s t e m .

  • u

t . p r i n t l n ( n ) ; 4 r e c ( n

  • 1

) ; 5 r e c ( n

  • 1

) ; 6 } 7 } r e c ( 3 ) ;

n =

P r i n t e d : 3 2 1

N e x t l i n e V a l u e

  • f

n

5 3 5 2 6 1

slide-17
SLIDE 17

A r e c u r s i v e f u n c t i

  • n

1 v

  • i

d r e c ( i n t n ) { 2 i f ( n > ) { 3 S y s t e m .

  • u

t . p r i n t l n ( n ) ; 4 r e c ( n

  • 1

) ; 5 r e c ( n

  • 1

) ; 6 } 7 } r e c ( 3 ) ;

n =

P r i n t e d : 3 2 1

N e x t l i n e V a l u e

  • f

n

5 3 5 2 6 1

P

  • p

s t a t e f r

  • m

c a l l s t a c k

slide-18
SLIDE 18

A r e c u r s i v e f u n c t i

  • n

1 v

  • i

d r e c ( i n t n ) { 2 i f ( n > ) { 3 S y s t e m .

  • u

t . p r i n t l n ( n ) ; 4 r e c ( n

  • 1

) ; 5 r e c ( n

  • 1

) ; 6 } 7 } r e c ( 3 ) ;

n = 1

P r i n t e d : 3 2 1

N e x t l i n e V a l u e

  • f

n

5 3 5 2

P

  • p

s t a t e f r

  • m

c a l l s t a c k

slide-19
SLIDE 19

A r e c u r s i v e f u n c t i

  • n

1 v

  • i

d r e c ( i n t n ) { 2 i f ( n > ) { 3 S y s t e m .

  • u

t . p r i n t l n ( n ) ; 4 r e c ( n

  • 1

) ; 5 r e c ( n

  • 1

) ; 6 } 7 } r e c ( 3 ) ;

n = 2

P r i n t e d : 3 2 1

N e x t l i n e V a l u e

  • f

n

5 3

P u s h s t a t e

  • n

t

  • c

a l l s t a c k

slide-20
SLIDE 20

A r e c u r s i v e f u n c t i

  • n

1 v

  • i

d r e c ( i n t n ) { 2 i f ( n > ) { 3 S y s t e m .

  • u

t . p r i n t l n ( n ) ; 4 r e c ( n

  • 1

) ; 5 r e c ( n

  • 1

) ; 6 } 7 } r e c ( 3 ) ;

n = 1

P r i n t e d : 3 2 1

N e x t l i n e V a l u e

  • f

n

5 3 6 2

slide-21
SLIDE 21

A r e c u r s i v e f u n c t i

  • n

1 v

  • i

d r e c ( i n t n ) { 2 i f ( n > ) { 3 S y s t e m .

  • u

t . p r i n t l n ( n ) ; 4 r e c ( n

  • 1

) ; 5 r e c ( n

  • 1

) ; 6 } 7 } r e c ( 3 ) ;

n = 1

P r i n t e d : 3 2 1 1

N e x t l i n e V a l u e

  • f

n

5 3 6 2 P r i n t s 1

slide-22
SLIDE 22

A r e c u r s i v e f u n c t i

  • n

1 v

  • i

d r e c ( i n t n ) { 2 i f ( n > ) { 3 S y s t e m .

  • u

t . p r i n t l n ( n ) ; 4 r e c ( n

  • 1

) ; 5 r e c ( n

  • 1

) ; 6 } 7 } H

  • w

m u c h m e m

  • r

y d

  • e

s t h i s f u n c t i

  • n

u s e ? D

  • n

' t f

  • r

g e t t

  • i

n c l u d e t h e c a l l s t a c k !

slide-23
SLIDE 23

A r e c u r s i v e f u n c t i

  • n

1 v

  • i

d r e c ( i n t n ) { 2 i f ( n > ) { 3 S y s t e m .

  • u

t . p r i n t l n ( n ) ; 4 r e c ( n

  • 1

) ; 5 r e c ( n

  • 1

) ; 6 } 7 } H

  • w

m u c h m e m

  • r

y d

  • e

s t h i s f u n c t i

  • n

u s e ? D

  • n

' t f

  • r

g e t t

  • i

n c l u d e t h e c a l l s t a c k ! n l e v e l s

  • f

r e c u r s i

  • n

n i t e m s

  • n

c a l l s t a c k O ( n ) m e m

  • r

y u s e !

slide-24
SLIDE 24

M e m

  • r

y u s e

  • f

r e c u r s i v e f u n c t i

  • n

s

C a l l i n g a f u n c t i

  • n

p u s h e s i n f

  • r

m a t i

  • n
  • n

t h e c a l l s t a c k H e n c e r e c u r s i v e f u n c t i

  • n

s u s e m e m

  • r

y i n t h e f

  • r

m

  • f

t h e c a l l s t a c k ! T

  • t

a l m e m

  • r

y u s e f r

  • m

c a l l s t a c k : O ( ma x i mu m r e c u r s i

  • n

d e p t h )

slide-25
SLIDE 25

A n

  • t

h e r r e c u r s i v e f u n c t i

  • n

v

  • i

d h e l l

  • (

) { S y s t e m .

  • u

t . p r i n t l n ( “ h e l l

  • w
  • r

l d ” ) ; h e l l

  • (

) ; }

Wh a t i s t h i s p r

  • g

r a m s u p p

  • s

e d t

  • d
  • ?

Wh a t d

  • e

s i t a c t u a l l y d

  • ?
slide-26
SLIDE 26

A n

  • t

h e r r e c u r s i v e f u n c t i

  • n

v

  • i

d h e l l

  • (

) { S y s t e m .

  • u

t . p r i n t l n ( “ h e l l

  • w
  • r

l d ” ) ; h e l l

  • (

) ; }

Wh a t i s t h i s p r

  • g

r a m s u p p

  • s

e d t

  • d
  • ?
  • P

r i n t “ h e l l

  • w
  • r

l d ”

  • v

e r a n d

  • v

e r a g a i n

Wh a t d

  • e

s i t a c t u a l l y d

  • ?
  • E

x c e p t i

  • n

i n t h r e a d " m a i n " j a v a . l a n g . S t a c k O v e r f l

  • w

E r r

  • r

Tie r e c u r s i v e c a l l t

  • h

e l l

  • fj

l l s t h e c a l l s t a c k !

slide-27
SLIDE 27

T a i l c a l l s

v

  • i

d h e l l

  • (

) { S y s t e m .

  • u

t . p r i n t l n ( “ h e l l

  • w
  • r

l d ” ) ; h e l l

  • (

) ; }

Tie r e c u r s i v e c a l l i s t h e l a s t t h i n g h e l l

  • d
  • e

s b e f

  • r

e i t r e t u r n s Tii s i s c a l l e d a t a i l c a l l , a n d h e l l

  • i

s t a i l r e c u r s i v e I d e a : d

  • n

' t b

  • t

h e r p u s h i n g a n y t h i n g

  • n

t h e c a l l s t a c k w h e n m a k i n g a t a i l c a l l

  • S

i n c e t h e f u n c t i

  • n

i s g

  • i

n g t

  • d
  • n
  • t

h i n g a f t e r w a r d s e x c e p t r e t u r n a g a i n

slide-28
SLIDE 28

T a i l c a l l

  • p

t i m i s a t i

  • n

I n l a n g u a g e s w i t h t a i l c a l l

  • p

t i m i s a t i

  • n

:

  • T

a i l c a l l s d

  • n

' t p u s h a n y t h i n g

  • n

t

  • t

h e c a l l s t a c k s

  • d
  • n

' t u s e a n y s t a c k s p a c e

  • H

e n c e t a i l r e c u r s i

  • n

a c t s j u s t l i k e a l

  • p
  • Tii

s a l l

  • w

s y

  • u

t

  • c

h

  • s

e b e t w e e n u s i n g l

  • p

s

  • r

r e c u r s i

  • n

, w h i c h e v e r i s m

  • r

e n a t u r a l f

  • r

t h e p r

  • b

l e m a t h a n d Mo s t f u n c t i

  • n

a l l a n g u a g e s h a v e T C O , s i n c e y

  • u

' r e s u p p

  • s

e d t

  • u

s e t a i l r e c u r s i

  • n

i n s t e a d

  • f

l

  • p

i n g :

  • e

. g . H a s k e l l , ML , S c a l a , E r l a n g , S c h e m e

  • b

u t a l s

  • s
  • m

e

  • t

h e r c i v i l i s e d l a n g u a g e s e . g . L u a U n f

  • r

t u n a t e l y m a n y l a n g u a g e s ( e . g . J a v a ) d

  • n

' t : (

slide-29
SLIDE 29

I s t h i s a t a i l c a l l ?

v

  • i

d h e l l

  • (

i n t n ) { i f ( n > ) { S y s t e m .

  • u

t . p r i n t l n ( “ h e l l

  • w
  • r

l d ” ) ; h e l l

  • (

n

  • 1

) ; } }

slide-30
SLIDE 30

I s t h i s a t a i l c a l l ?

v

  • i

d h e l l

  • (

i n t n ) { i f ( n > ) { S y s t e m .

  • u

t . p r i n t l n ( “ h e l l

  • w
  • r

l d ” ) ; h e l l

  • (

n

  • 1

) ; } }

Y e s !

  • n
  • t

h i n g m

  • r

e h a p p e n s a f t e r t h e r e c u r s i v e c a l l t

  • h

e l l

slide-31
SLIDE 31

I s t h i s a t a i l c a l l ?

i n t f a c ( i n t n ) { i f ( n = = ) r e t u r n 1 ; e l s e r e t u r n n * f a c ( n

  • 1

) ; }

slide-32
SLIDE 32

I s t h i s a t a i l c a l l ?

i n t f a c ( i n t n ) { i f ( n = = ) r e t u r n 1 ; e l s e r e t u r n n * f a c ( n

  • 1

) ; }

N

  • !
  • a

f t e r t h e r e c u r s i v e c a l l f a c ( n

  • 1

) r e t u r n s , y

  • u

h a v e t

  • m

u l t i p l y b y n

slide-33
SLIDE 33

T a i l r e c u r s i

  • n

u s i n g a l

  • p

Y

  • u

c a n a l w a y s w r i t e a t a i l

  • r

e c u r s i v e f u n c t i

  • n

u s i n g a w h i l e ( t r u e )

  • l
  • p

i n s t e a d :

v

  • i

d h e l l

  • (

i n t n ) { w h i l e ( t r u e ) { i f ( n > ) { S y s t e m .

  • u

t . p r i n t l n ( “ h e l l

  • w
  • r

l d ” ) ; h e l l

  • (

n

  • 1

) ; n = n

  • 1

; } e l s e r e t u r n ; } }

I n s t e a d

  • f

m a k i n g a t a i l

  • r

e c u r s i v e c a l l , g

  • t

h r

  • u

g h t h e l

  • p

a g a i n E x p l i c i t l y r e t u r n w h e n t h e r e c u r s i

  • n

i s fj n i s h e d

slide-34
SLIDE 34

T a i l r e c u r s i

  • n

u s i n g a l

  • p

T i d i e d u p a b i t :

v

  • i

d h e l l

  • (

i n t n ) { w h i l e ( n > ) { S y s t e m .

  • u

t . p r i n t l n ( “ h e l l

  • w
  • r

l d ” ) ; n = n

  • 1

; } }

slide-35
SLIDE 35

S e a r c h i n g i n a b i n a r y t r e e

N

  • d

e < E > s e a r c h ( N

  • d

e < E > n

  • d

e , i n t v a l u e ) { i f ( n

  • d

e = = n u l l ) r e t u r n n u l l ; i f ( v a l u e = = n

  • d

e . v a l u e ) r e t u r n n

  • d

e ; e l s e i f ( v a l u e < n

  • d

e . v a l u e ) r e t u r n s e a r c h ( n

  • d

e . l e f t ) ; e l s e r e t u r n s e a r c h ( n

  • d

e . r i g h t ) ; }

slide-36
SLIDE 36

T h e s a m e , t a i l

  • r

e c u r s i v e

N

  • d

e < E > s e a r c h ( N

  • d

e < E > n

  • d

e , i n t v a l u e ) { w h i l e ( t r u e ) { i f ( n

  • d

e = = n u l l ) r e t u r n n u l l ; i f ( v a l u e = = n

  • d

e . v a l u e ) r e t u r n n

  • d

e ; e l s e i f ( v a l u e < n

  • d

e . v a l u e ) n

  • d

e = n

  • d

e . l e f t ; e l s e n

  • d

e = n

  • d

e . r i g h t ; } }

Wh e n p r

  • g

r a m m i n g i n l a n g u a g e s l i k e J a v a t h a t d

  • n

' t h a v e T C O , y

  • u

m i g h t n e e d t

  • d
  • t

h i s t r a n s f

  • r

m a t i

  • n

y

  • u

r s e l f !

slide-37
SLIDE 37

T a i l c a l l s

R e m e m b e r t h a t t h e t

  • t

a l a m

  • u

n t

  • f

e x t r a m e m

  • r

y u s e d b y a r e c u r s i v e f u n c t i

  • n

i s O ( ma x i mu m r e c u r s i

  • n

d e p t h ) I f t h e l a n g u a g e s u p p

  • r

t s T C O , t h e a m

  • u

n t i s i n s t e a d O ( ma x i mu m d e p t h

  • f

n

  • n
  • t

a i l r e c u r s i v e c a l l s ) – b e t t e r ! I n l a n g u a g e s w i t h

  • u

t T C O , y

  • u

c a n t r a n s f

  • r

m t a i l r e c u r s i

  • n

i n t

  • a

l

  • p

t

  • s

a v e s t a c k s p a c e ( m e m

  • r

y )

slide-38
SLIDE 38

A b i g g e r e x a m p l e : q u i c k s

  • r

t

4 8 5 3 9 2 7 3 2 1 3 3 2 2 1 4 5 9 8 7 1 2 2 3 3 4 5 7 8 9

Q u i c k s

  • r

t Q u i c k s

  • r

t P a r t i t i

  • n
slide-39
SLIDE 39

Q u i c k s

  • r

t

W e s a i d t h a t q u i c k s

  • r

t w a s i n

  • p

l a c e , b u t i t m a k e s t w

  • r

e c u r s i v e c a l l s !

v

  • i

d s

  • r

t ( i n t [ ] a , i n t l

  • w

, i n t h i g h ) { i f ( l

  • w

> = h i g h ) r e t u r n ; i n t p i v

  • t

= p a r t i t i

  • n

( a , l

  • w

, h i g h ) ; s

  • r

t ( a , l

  • w

, p i v

  • t
  • 1

) ; s

  • r

t ( a , p i v

  • t

+ 1 , h i g h ) ; }

H

  • w

m u c h m e m

  • r

y d

  • e

s t h i s u s e i n t h e w

  • r

s t c a s e , i n c l u d i n g t h e c a l l s t a c k ?

slide-40
SLIDE 40

Q u i c k s

  • r

t

W e s a i d t h a t q u i c k s

  • r

t w a s i n

  • p

l a c e , b u t i t m a k e s t w

  • r

e c u r s i v e c a l l s !

v

  • i

d s

  • r

t ( i n t [ ] a , i n t l

  • w

, i n t h i g h ) { i f ( l

  • w

> = h i g h ) r e t u r n ; i n t p i v

  • t

= p a r t i t i

  • n

( a , l

  • w

, h i g h ) ; s

  • r

t ( a , l

  • w

, p i v

  • t
  • 1

) ; s

  • r

t ( a , p i v

  • t

+ 1 , h i g h ) ; }

H

  • w

m u c h m e m

  • r

y d

  • e

s t h i s u s e i n t h e w

  • r

s t c a s e , i n c l u d i n g t h e c a l l s t a c k ? O ( n ) , i n c l u d i n g t h e c a l l s t a c k !

slide-41
SLIDE 41

Q u i c k s

  • r

t

L e t ' s m a k e a v e r s i

  • n
  • f

q u i c k s

  • r

t t h a t u s e s O ( l

  • g

n ) s t a c k s p a c e .

v

  • i

d s

  • r

t ( i n t [ ] a , i n t l

  • w

, i n t h i g h ) { i f ( l

  • w

> = h i g h ) r e t u r n ; i n t p i v

  • t

= p a r t i t i

  • n

( a , l

  • w

, h i g h ) ; s

  • r

t ( a , l

  • w

, p i v

  • t
  • 1

) ; s

  • r

t ( a , p i v

  • t

+ 1 , h i g h ) ; }

slide-42
SLIDE 42

Q u i c k s

  • r

t i n O ( l

  • g

n ) s p a c e

I d e a : i f w e a r e u s i n g a l a n g u a g e w i t h T C O , t h e s e c

  • n

d r e c u r s i v e c a l l u s e s n

  • s

t a c k s p a c e ( i t ' s a t a i l c a l l ) ! H e n c e , t h e t

  • t

a l m e m

  • r

y u s e i s O ( r e c u r s i

  • n

d e p t h

  • f

fj r s t r e c u r s i v e c a l l ) S

  • :

s

  • r

t t h e s m a l l e r p a r t i t i

  • n

w i t h t h e fj r s t r e c u r s i v e c a l l , a n d t h e b i g g e r

  • n

e w i t h t h e s e c

  • n

d r e c u r s i v e c a l l I f t h e a r r a y h a s s i z e n , t h e s m a l l e r p a r t i t i

  • n

h a s s i z e a t m

  • s

t n / 2 , s

  • t

h e r e c u r s i

  • n

d e p t h i s a t m

  • s

t O ( l

  • g

n ) .

slide-43
SLIDE 43

S

  • r

t i n g t h e s m a l l e r p a r t i t i

  • n

fj r s t

I n l a n g u a g e s w i t h T C O ( i . e . n

  • t

J a v a ) , t h i s u s e s O ( l

  • g

n ) s p a c e .

v

  • i

d s

  • r

t ( i n t [ ] a , i n t l

  • w

, i n t h i g h ) { i f ( l

  • w

> = h i g h ) r e t u r n ; i n t p i v

  • t

= p a r t i t i

  • n

( a , l

  • w

, h i g h ) ; i f ( p i v

  • t

l

  • w

< h i g h p i v

  • t

) { – – s

  • r

t ( a , l

  • w

, p i v

  • t
  • 1

) ; s

  • r

t ( a , p i v

  • t

+ 1 , h i g h ) ; } e l s e { s

  • r

t ( a , p i v

  • t

+ 1 , h i g h ) ; s

  • r

t ( a , l

  • w

, p i v

  • t
  • 1

) ; } }

S

  • r

t t h e s m a l l e r p a r t i t i

  • n

fj r s t

slide-44
SLIDE 44

S

  • r

t i n g t h e s m a l l e r p a r t i t i

  • n

fj r s t

I n J a v a , w e m u s t t r a n s f

  • r

m t h e t a i l r e c u r s i

  • n

i n t

  • a

w h i l e ( t r u e )

  • l
  • p

.

v

  • i

d s

  • r

t ( i n t [ ] a , i n t l

  • w

, i n t h i g h ) { w h i l e ( t r u e ) { i f ( l

  • w

> = h i g h ) r e t u r n ; i n t p i v

  • t

= p a r t i t i

  • n

( a , l

  • w

, h i g h ) ; i f ( p i v

  • t

l

  • w

< h i g h p i v

  • t

) { – – s

  • r

t ( a , l

  • w

, p i v

  • t
  • 1

) ; s

  • r

t ( a , p i v

  • t

+ 1 , h i g h ) ; l

  • w

= p i v

  • t

+ 1 ; } e l s e { s

  • r

t ( a , p i v

  • t

+ 1 , h i g h ) ; s

  • r

t ( a , l

  • w

, p i v

  • t
  • 1

) ; h i g h = p i v

  • t
  • 1

; } } }