Python: Recursive Functions Recursive Functions Recall factorial - - PowerPoint PPT Presentation

python recursive functions recursive functions
SMART_READER_LITE
LIVE PREVIEW

Python: Recursive Functions Recursive Functions Recall factorial - - PowerPoint PPT Presentation

Python: Recursive Functions Recursive Functions Recall factorial function: Iterative Algorithm Loop construct (while) can capture computation in a set of state variables that update on each iteration through loop Recursive Functions


slide-1
SLIDE 1

Python: Recursive Functions

slide-2
SLIDE 2

Recursive Functions

Recall factorial function:

Iterative Algorithm

Loop construct (while)

can capture computation in a set of state variables that update on each iteration through loop

slide-3
SLIDE 3

Recursive Functions

Alternatively: Consider 5! = 5x4x3x2x1 can be re-written as 5!=5x4! In general n! = nx(n-1)! factorial(n) = n * factorial(n-1)

slide-4
SLIDE 4

Recursive Functions

Alternatively: Consider 5! = 5x4x3x2x1 can be re-written as 5!=5x4! In general n! = nx(n-1)! factorial(n) = n * factorial(n-1)

Recursive Algorithm

function calling itself

slide-5
SLIDE 5

Recursive Functions

slide-6
SLIDE 6

Recursive Functions

Known Base case

slide-7
SLIDE 7

Recursive Functions

Base case Recursive step

slide-8
SLIDE 8

Recursive Functions

  • No computation in first

phase, only function calls

  • Deferred/Postponed

computation

– after function calls terminate, computation starts

  • Sequence of calls have

to be remembered

Execution trace for n = 4 fact (4) 4 * fact (3) 4 * (3 * fact (2)) 4 * (3 * (2 * fact (1))) 4 * (3 * (2 * (1 * fact (0)))) 4 * (3 * (2 * (1 * 1))) 4 * (3 * (2 * 1)) 4 * (3 * 2) 4 * 6 24

Courtesy Prof PR Panda CSE Department IIT Dehi

slide-9
SLIDE 9

Another Example (Iterative)

Source:https://ocw.mit.edu/courses/electrical-engineering-and-computer-science/6-0001-introduction-to-computer-science-and- programming-in-python-fall-2016/lecture-slides-code/

Iterative

slide-10
SLIDE 10

Another Example (Recursive)

Source:https://ocw.mit.edu/courses/electrical-engineering-and-computer-science/6-0001-introduction-to-computer-science-and- programming-in-python-fall-2016/lecture-slides-code/

Iterative Algorithm Recursive

slide-11
SLIDE 11

Recursive Functions

  • Size of the problem reduces at each step
  • The nature of the problem remains the same
  • There must be at least one terminating condition
  • Simpler, more intuitive

– For inductively defined computation, recursive algorithm may be natural

  • close to mathematical specification
  • Easy from programing point of view
  • May not efficient computation point of view
slide-12
SLIDE 12

GCD Algorithm

gcd (a, b) = b if a mod b = 0 gcd (b, a mod b) otherwise

Iterative Algorithm Recursive Algorithm

slide-13
SLIDE 13

GCD Algorithm

gcd (a, b) = b if a mod b = 0 gcd (b, a mod b) otherwise

gcd (6, 10) gcd (10, 6) gcd (6, 4) gcd (4, 2) 2 2 2 2

Courtesy Prof PR Panda CSE Department IIT Dehi

slide-14
SLIDE 14

Fibonacci Numbers

fib (n) = 0 n = 1 1 n = 2 fib (n-1) + fib (n-2) n > 2

Recursive Algorithm

Courtesy Prof PR Panda CSE Department IIT Dehi

slide-15
SLIDE 15

Fibonacci Numbers

fib (6) fib (5) fib (4) fib (3) fib (2) fib (2) fib (1) fib (3) fib (2) fib (1) fib (4) fib (3) fib (2) fib (2) fib (1)

Courtesy Prof PR Panda CSE Department IIT Dehi

slide-16
SLIDE 16

Power Function

  • Write a function power (x,n) to compute the

nth power of x

power(x,n) = 1 if n = 0 x * power(x,n-1) otherwise

slide-17
SLIDE 17

Power Function

  • Efficient power function
  • Fast Power

– fpower(x,n) = 1 for n = 0 – fpower(x,n) = x * (fpower(x, n/2))2 if n is odd – fpower(x,n) = (fpower(x, n/2))2 if n is even

slide-18
SLIDE 18

Power Function

  • Efficient power function
slide-19
SLIDE 19

Towers of Hanoi Problem

  • 64 gold discs with different

diameters

  • Three poles: (Origin, Spare, Final)
  • Transfer all discs to final pole

from origin

– one at a time – spare can be used to temporarily store discs – no disk should be placed on a smaller disk

  • Intial Arrangement:

– all on origin pole, largest at bottom, next above it, etc.

Origin Spare Final

Courtesy Prof PR Panda CSE Department IIT Dehi

slide-20
SLIDE 20

3-Step Strategy

Origin Spare Final Origin Spare Final Origin Spare Final Origin Spare Final

Solve for (n-1) disks. Move to Spare. Use Final as Spare. Move bottom disk to Final Move (n-1) disks to Final. Use Origin as Spare.

Courtesy Prof PR Panda CSE Department IIT Dehi

slide-21
SLIDE 21

Recursive Solution

  • Use algorithm for (n-1) disks to solve n-disk problem
  • Use algorithm for (n-2) disks to solve (n-1) disk problem
  • Use algorithm for (n-3) disks to solve (n-2) disk problem
  • ...
  • Finally, solve 1-disk problem:

– Just move the disk!

Courtesy Prof PR Panda CSE Department IIT Dehi

slide-22
SLIDE 22

Recursive Solution

Source:https://ocw.mit.edu/courses/electrical-engineering-and-computer-science/6-0001-introduction-to-computer-science-and- programming-in-python-fall-2016/lecture-slides-code/