Dasar-Dasar Pemrograman Rekursi
… Rekursi yaitu prosedur atau fungsi yang memanggil dirinya sendiri . Contoh: procedure Z; begin { statement } Z; end; Dipanggil Kembali
Contoh 1 uses crt; var i: integer; procedure pro; begin writeln('Hallo'); i:= i+1; if i<10 then pro; end; clrscr; i:= 1; readkey; end. procedure pro Pemanggilan pro
Output Kenapa 9 kali?
… uses crt; procedure rekursi(A:integer); begin if A < 10 then writeln('Pascal'); A:=A+1; rekursi(A); end; var x:integer; clrscr; x:=3; rekursi(x); readln; end.
… procedure rekursi; begin writeln('Pascal'); rekursi; end; readln; end.
Rekursi untuk menghitung nilai faktorial 1 jika m = 0 1 x 2 x 3 x ... x m jika m > 0 Secara rekursi program di atas dapat dijalankan sebagai berikut: 0! = 1 Bila m > 0, m! = m x (m-1)!
… uses crt; Var HASIL : Integer; FUNCTION Faktorial (M : Integer) : LongInt; BEGIN IF M = 0 THEN Faktorial := 1 ELSE Faktorial := M * Faktorial(M-1); END; begin clrscr; HASIL := Faktorial (4); writeln('Hasil dari 4! Adalah=',HASIL); readkey; end.
hasil 4!= 4 x 3 x 2 x 1 = 24
Proses-nya
Latihan Buatlah program rekursi untuk menampilkan suatu deret bilangan bulat N dari 0 s/d 10. Buat dalam program untuk: 1 jika y=0 f(x, y) = x * f(x, y-1) jika y>0
Jawaban uses crt; Procedure Deret(N: Integer); Begin Write(n:3); If n < 10 then Deret (n+1); End; Var N: integer; clrscr; N:=0; Deret (n); Readln; End.
... uses crt; var hasil: integer; function f(x, y: integer): integer; begin if y=0 then begin f:=1; end else begin f:= x * f(x, y-1); end; clrscr; hasil:= f(3,0); writeln(hasil); readkey; end.