prosedur/function yang memanggil dirinya sendiri – paling jelas terlihat bila dibuat dalam notasi matematika. Contohnya, faktorial :

if n = 1, faktorial(n) = 1

if n > 1, faktorial(n) = n*faktorial(n-1)

sehingga programnya akan menjadi seperti ini [*.pas].

note:ini materi yang sangat penting (dan untuk mengerti benar agak lama), jadi make sure kalian benar-benar mengerti alur rekursinya..

Harus dikuasai:

  • Permutasi – given n, generate semua permutasi angka2 dari 1 – n. Solusi[.pas]
  • Kombinasi  - given n dan k, generate semua kombinasi k angka dari 1-n. Solusi[.pas]
  • perhatikan penggunaan variabel khusus dalam procedure/function dalam contoh2 di atas. bila var i : integer; ditaruh di global, program akan menjadi salah.

Latihan :

To be added : problems, solution, detailed explanation

 

12 Responses to Rekursi

  1. Derrick says:

    Kak,kalau ada soal seperti A^B yang besar sekali dan jika hasilnya lebih besar dari 999999 maka hanya memasukkan 6 angka terakhir itu divide and conquernya itu gimana ya kak?

    divide and conquer itu sendiri seperti apa kak?

    • Angelina Veni says:

      Divide and Conquer intinya:
      1) membagi masalah yang besar menjadi masalah yang kecil
      2) selesaikan / buat solusi masalah yang kecil
      3) gabungkan solusi2 kecil menjadi solusi global

      untuk A^B mod 1000000, kira2 rumus rekursif / divide and conquernya :

      f(pangkat) ->
      - bila pangkat adalah 1, A. => base case
      - bila pangkat adalah genap, f(pangkat/2) * f(pangkat/2)
      - bila pangkat adalah ganjil, f(pangkat/2) * f(pangkat/2) * f(1)

      mod sejutanya tinggal diselip2in aja.

  2. Febry says:

    Kak, soal OSN yang paduan suara itu gimana ya algo rekursinya? Thx before..

    • Angelina Veni says:

      itu kalo ga salah kan nentuin ‘kelompok’ mana yang dapet x, yang mana yang dapet x+1. di mana x = total div jumlah kelompok. nah pembagiannya ini ditentuin pake permutasi…

  3. Mbak, fungsinya “fillchar(used,sizeof(used),false)” itu apa ya??
    Mohon bantuannya….

    • whyrsm says:

      used itu array yang tipenya boolean mungkin ya ?

      fillchar(used,sizeof(used),false), kalo bahasa indonesianya mungkin gini kali ya : mengisi seluruh array used, dengan “false”.

      kenapa seluruh array used? karena sizeof(used)

      *cmiiw :) soalnya masih belajar juga :)

  4. eko bp says:

    kak tolong bantuannya ya

  5. erwin says:

    tolong dong soal-soal olimpiade TIK OSK dan OSP dan Pembahasannya, terima kasih terlebih dulu atas kemurahan hatinya mengirimkan saol dan pembahasan

  6. tari says:

    kak tlng bantuannya unt soal:
    function a(n:integer):integer;
    begin
    if(n=0)then
    a:=0:
    else
    a:=1-n*a(n-1);
    end;
    berapa hasil dari a(5)

    input(n);
    j:=n-1;
    for i:=j downto 2 do
    begin
    n:=i mod n;
    end;
    writeln(n);
    berapa outputnya jika di inputkan n=97

    mksh atas bantuannya

  7. Rhemed says:

    sob, bleh minta tolong,

    masalahnya bilangan pangkat besar kenapa overflow ya?

    gimana source kodingnya.
    misal 77 pangkat 53 mod 239 =….?

    minta tolong source koding.a ya sob…

Leave a Reply to umar dh Cancel reply

Your email address will not be published. Required fields are marked *

*

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>

Set your Twitter account name in your settings to use the TwitterBar Section.