Analisis Matematis Rekursif

Kasus Pertama : Perpangkatan

function pangkat(x : integer, y : integer) : integer
 if  y = 0 then
   pangkat ß  1
else
   pangkat ß  x  * pangkat (x, y-1)
Endif
 Endfunction 
Algoritma
Input x, y
Output pangkat (x,y)

Menghitung nilai T(n)
T(n) = [       0     , n = 0
            T(n-1)+1, n > 0

T(n) = 1 + T(n-1)
         = 1 + 1 + T(n-2) = 2 + T(n-2)        
         = 2 + 1 + T(n-3) = 3 + T(n-3)   
         = ........
         = nT(0)   
         = n + 0  
Jadi, T(n) = n 
                               
Penjelasan
Program di atas akan berhenti jika pangkatnya 0. Contohnya 3^5 berarti kita akan mengurangi pangkatnya sebesar 1 menjadi 3 x 3^4 dan kita akan mencari hasil nya , hasilnya adalah 243

Prosesnya adalah , Selama pangkaynya > 0 , maka pangkat nya -1 jika pangkatnya sudah 0 , maka program tersebut akan berhenti

Contohnya;
3^5 = 3 x 3^4 = 3 x 81 = 243
3^4 = 3 x 3^3 = 3 x 27 = 81
3^3 = 3 x 3^2 = 3 x 9 = 27
3^2 = 3 x 3^1 = 3 x 3 = 9
3^1 = 3 x 3^0 = 3 x 1 = 3
3^0= 3 x 1 = 3


Kasus Kedua : Menara Hanoi

procedure Hanoi (input n, A, B, C:integer)

Algoritma
 if  n = 1 then
   output('Pindahkan piringan dari',A,'ke',B)
else
   Hanoi(n-1,A,C,B)
   output('Pindahkan piringan dari',A,'ke',B)
   Hanoi(n-1,C,B,A)
Endif
Endprocedure
Input n
Output Hanoi (A, B, C)

Menghitung nilai T(n)
T(n) = [      1        , n = 1
            2T(n-1)+1, n > 1

T(n) = 1 + 2T(n-1)
         = 1 + 2(1 + 2T(n-2)) = 1 + 2 + 22 T(n-2)        
         =1 + 2 + 22(1 + 2T(n-3)) = 1 + 2 + 22 + 23T(n-3)  
         = ........
         = (1 + 2 + 22 + .......+ 2n-2)+ 2n-1 T(1)     
         = 1 + 2 + 22 + .......+ 2n-1.1
         = 2n - 1  
Jadi, T(n) = 2n - 1


Kasus Ketiga : Persoalan Minimum dan Maksimum

procedure MinMaks (input A : TabelInt, i, j :integer, output min, maks : integer)
 { Mencari nilai maksimum dan minimum di dalam tabel A yang berukuran n elemen secara Divide        and Conquer.
   Masukan: tabel A yang sudah terdefinisi elemen-elemennya
     Keluaran: nilai maksimum dan nilai minimum tabel
 }
Kamus 
    min1, min2, maks1, maks2 : integer
Algoritma
 if  i = j then             {1 elemen}
   min <-- Ai
   maks <-- Ai
else
 if  (i = j-1) then       {2 elemen}
   if  Ai < Aj then 
       maks <-- Aj
       min <-- Ai
   else
      maks <-- Ai
      min <-- Aj
   endif
else                            {lebih dari 2 elemen}
     k <-- (i+j) div 2     {bagidua tabel pada posisi k}
     MinMaks2(A, i, k, min1, maks2)
     MinMaks2(A, i, k+1,j, min2, maks2)
      if  min1 < min2 then
         min <-- min1
      else
         min <-- min2
      endif 

        if  maks1 < maks2 then
             maks <-- maks2
      else
         maks <-- maks2
      endif
      
Endprocedure
Input A
Output MinMaks (i,j,min,maks)

Menghitung nilai T(n)
T(n) = [      0        , n = 1
                  1        , n = 2
            2T(n/2)+2, n > 2

T(n) = 2T(n/2) + 2
         = 2(2T(n/4) + 2) + 2 = 4T(n/4) + 4 + 2     
         = 4(2T(n/8) + 2)  + 4 + 2 = 8T(n/8) +8 + 4 + 2
         = ........