130 likes | 608 Views
Recursive and Iterative Algorithms. 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. Now this Algorithm?. Algorithm now-what (n)
E N D
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