Latihan Kode Program Pascal: Fungsi Rekursif Menghitung Faktorial

Dalam latihan kode program bahasa Pascal kali ini kita akan membahas cara membuat fungsi rekursif untuk menghitung faktorial.


Soal Fungsi Rekursif untuk Menghitung Faktorial

Buatlah kode program dalam bahasa Pascal dalam bentuk fungsi rekursif untuk menghitung faktorial. Kode program menerima satu inputan angka dan menghasilkan jumlah faktorial.

Bonus: Buat juga versi dengan fungsi biasa (non-rekursif)

Berikut hasil yang di inginkan (1):

##  Program Pascal Menghitung Faktorial  ##
===========================================

Input angka: 6
6! = 720

Berikut hasil yang di inginkan (2):

##  Program Pascal Menghitung Faktorial  ##
===========================================

Input angka: 12
12! = 479001600

Tips Membuat Fungsi Rekursif

Dalam programming, fungsi rekursif adalah fungsi yang memanggil dirinya sendiri. Untuk beberapa kasus, fungsi rekursif bisa lebih efisien, tapi penulisannya memang tidak mudah dan sering terjadi error / infinity loop.

Selain itu tidak semua masalah bisa dipecahkan dengan fungsi rekursif, menghitung faktorial menjadi contoh penerapan yang banyak dipakai untuk membuat fungsi rekursif.

Soal ini melatih pemahaman terkait logika matematika serta pembuatan function. Berikut tutorial pendahuluan yang bisa diikuti:

Dalam matematika, faktorial adalah hasil perkalian menaik dan ditulis dengan tanda seru " ! ". Sebagai contoh, 4 faktorial ditulis dengan 4!, dan nilainya adalah 1 * 2 * 3 * 4 = 24, atau 7 faktorial ditulis dengan 7! = 1 * 2 * 3 * 4 * 5 * 6 * 7 = 5040.


Kode Program Bahasa Pascal Fungsi Rekursif untuk Menghitung Faktorial

Berikut salah satu solusi kode program fungsi rekursif untuk menghitung faktorial dengan bahasa Pascal:

program menghitung_faktorial;
uses crt;
var
  angka: integer;

function hitungFaktorial(input:integer):qword; 
  begin 
  if (input > 1) then
    hitungFaktorial :=  input * hitungFaktorial(input-1)
  else
    hitungFaktorial := 1;
  end;

begin
  clrscr;
  writeln('##  Program Pascal Menghitung Faktorial  ##');
  writeln('===========================================');
  writeln;
  
  write('Input angka: ');
  readln(angka);

  writeln(angka,'! = ', hitungFaktorial(angka));
  
  readln;
end.

Latihan Kode Program Pascal - Fungsi Rekursif Menghitung Faktorial

Untuk membaca kode program yang melibatkan function, sebaiknya mulai dari kode utama terlebih dahulu agar kita bisa melihat bagaimana fungsi tersebut dipanggil.

Di dalam kode utama, pada baris 21 kode program akan meminta inputan dari user, yakni angka yang akan dihitung faktorialnya. Angka tersebut disimpan ke dalam variabel angka.

Kemudian di baris 23 terdapat pemanggilan fungsi hitungFaktorial(angka). Disini angka dikirim sebagai argument dari fungsi hitungFaktorial().

Pendefinisian fungsi hitungFaktorial() ada di baris 6-12. Fungsi ini menerima nilai inputan ke dalam parameter input.

Di dalam fungsi hitungFaktorial(), terdapat kondisi if untuk memeriksa apakah parameter input bernilai lebih dari 1 atau tidak. Jika iya, jalankan perintah hitungFaktorial :=  input * hitungFaktorial(input-1). Inilah yang dimaksud dengan rekursif, dimana fungsi ini memanggil dirinya sendiri.

Jika ternyata kondisi if(input > 1) bernilai false, maka fungsi hitungFaktorial() akan mengembalikan angka 1.

Fungsi faktorial akan mengembalikan angka dengan tipe data qword. Qword adalah tipe data integer terbesar dalam bahasa Pascal. Tipe data ini sanggup menampung angka 0 hingga 18446744073709551615. Jika menggunakan tipe data integer, maka angka maksimal hanya 32767 atau 2147483647 (tergantung jenis compiler).


Kode Program Pascal Menghitung Faktorial (dengan Fungsi Biasa)

Memahami cara kerja fungsi rekursif memang cukup sulit. Dalam prakteknya, saya pribadi juga sangat jarang menggunakan fungsi rekursif. Lebih baik tulis dalam fungsi biasa saja agar lebih mudah dipahami.

Sebagai alternatif, berikut kode program mencari faktorial menggunakan fungsi biasa (tanpa rekursif):

program menghitung_faktorial;
uses crt;
var
  angka: integer;

function hitungFaktorial(input:integer):qword; 
  var
    hasil: qword;
    i: integer;
  begin 
    hasil := 1;
    for i := 1 to input do
      begin
        hasil := hasil * i;
      end;
    hitungFaktorial := hasil;
  end;

begin
  clrscr;
  writeln('##  Program Pascal Menghitung Faktorial  ##');
  writeln('===========================================');
  writeln;
  
  write('Input angka: ');
  readln(angka);

  writeln(angka,'! = ', hitungFaktorial(angka));
  
  readln;
end.

Di dalam fungsi hitungFaktorial(), kali ini cukup memakai perulangan for untuk menghitung faktorial.

Perulangan akan dimulai dari i:=1 hingga input. Dalam setiap iterasi, hitung hasil perkalian angka dan simpan ke dalam variabel hasil. Terakhir, variabel hasil inilah yang di-return agar nilainya sampai ke kode program utama.

Agar angka yang dikembalikan bisa lebih besar, saya juga memamakai tipe data qword untuk variabel hasil.


Itulah kode program membuat fungsi rekursif (dan tanpa rekursif) untuk menghitung faktorial dalam bahasa Pascal. Semoga bisa bermanfaat.


eBook Pascal Uncover Duniailkom
Apabila anda serius ingin mempelajari Pascal dan butuh materi Pascal yang jauh lebih lengkap, Duniailkom telah menerbitkan eBook Pascal Uncover yang membahas bahasa pemrograman Pascal dari dasar hingga procedure, function dan contoh kasus. Penjelasan lebih lanjut bisa ke eBook Pascal Uncover Duniailkom.

Add Comment