Recursive and Iterative Algorithms
80 likes | 121 Views
Debas Mitra introduces algorithms for Fibonacci number calculation, binary search, and recursion vs. iteration. Understand recursive concepts and iterative solutions for efficient programming. Dive deep into algorithmic thinking!
Recursive and Iterative Algorithms
E N D
Presentation Transcript
Recursive and Iterative Algorithms Debasis Mitra, FIT
What does the following algorithm do? Algorithm what(n) (1) x:=1; y:=1; z:=0; (2) for int I:=1 to n-2 do (3) z := x +y; (4) y := x; (5) x := z; end for; (6) return z; End algorithm. Debasis Mitra, FIT
Now this Algorithm? Algorithm now-what(n) (1) if n = = 1 or 0 then return 1 (2) else (3) return now-what(n-1) + now-what(n-2) (4) end if; End algorithm. Debasis Mitra, FIT
Actually the recursion is working like: Algorithm now-what(n) (1) create stack; (2) if n>1 then push(stack, n); (3) int temp := 0; (4) while stack not empty do (5) int x := pop(stack); (6) if x > 1 then (7) push (stack, x-1); (8) push (stack, x-2); else (9) temp := temp + 1; end if; end while; (10) return temp; End algorithm. Debasis Mitra, FIT
Recursion tree for recursive Fibonacci number calculation: sample n-w(4) n-w(2) n-w(3) n-w(0) n-w(1) n-w(2) n-w(1) n-w(1) n-w(0) n-w(4) = n-w(1) + n-w(0) + n-w(1) + n-w(1) + n-w(0) = 5 Debasis Mitra, FIT
Binary search recursive algorithm Algorithm bin-search(sorted array A, index f, index l, key) (1) If f = = l (2) If key = = A[f] then return f else return failure; else (3) int mid = (f + l)/2; (4) if key >A[mid] (5) return bin-search(A, mid+1, l); else (6) return bin-search(A, f, mid); end if; end if; End algorithm. Driver: bin-search (A, 1, n). Debasis Mitra, FIT
Binary Search iterative algorithm: stack-based Algorithm bin-search(sorted array A, key) (1) create stack; int f := 1; int l := size_of(A); (3)push(stack, (f,l)); (4) while stack not empty do (5) (f, l) := pop(stack); (6) if f = = l then (7) if key = = A[f] then return f (8) else return failure; else (9) int mid := (f+l)/2; (10) if key > A[mid] then (11) push (stack, (mid+1, l)); else (12) push (stack, (f, mid)); end if; end while; End algorithm. Debasis Mitra, FIT
Binary Search iterative algorithm: non-stack based Algorithm bin-search(sorted array A, key) (1) int f := 1; int l := size_of(A); (2) While fl do (3) int mid := (f + l)/2; (4) if key > A[mid] then (11) f := mid +1; else (12) l := mid; end while; (13)If key = = A[f] then return f (14) else return failure; End algorithm. Debasis Mitra, FIT