Tulisan ini saya buat setelah membaca dan menjawab pertanyaan yang muncul di Grup Facebook BELAJAR PROGRAM (coding).
Di sana muncul pertanyaan untuk membuat program dalam bahasa Python untuk membuat deret bilangan dengan menggunakan fungsi rekursif.
Adapun deret bilangan yang harus diselesaikan adalah sbb:
- 1, 2, 3, 4, 5, 6, 7, 8, 9, … dst.
- 1, 2, 4, 8, 16, 32, 64, 128, …dst.
- 1, 4, 2, 8, 4, 16, 8, 32, 16, 64, 32, …dst.
Sebelum masuk ke bagian program, kita perlu tahu dulu apa yang dimaksud dengan fungsi rekursif.
Fungsi Rekursif adalah fungsi yang memanggil dirinya sendiri. Gampangnya seperti itu.
Karena fungsi tersebut memanggil dirinya sendiri, maka diperlukan pengkondisi yang bertugas untuk menghentikan pemanggilan. Tanpa pengkondisi tersebut, maka fungsi tersebut akan terus-menerus memanggil dirinya sendiri sampai stack overflow.
Setiap kali fungsi dipanggil, maka akan dialokasikan memori (stack memory) untuk menyimpan parameter dan variabel lokal. Jika fungsi memanggil dirinya sendiri tanpa batas, maka akan dialokasikan memori setiap kali fungsi tersebut dipanggil hingga akhirnya stack memory melampaui batas (overflow).
Perhatikan contoh fungsi berikut ini. Fungsi akan terus-menerus memanggil dirinya sendiri tanpa batas. Jika dieksekusi, maka pasti akan menghasilkan kesalahan.
int fungsi()
{
return fungsi();
}
Nah, langsung saja ya, kita akan selesaikan dulu deret-deret di atas menggunakan bahasa C.
Program Rekursi 1 – Bahasa C
#include <stdio.h>
/*******************************************
Fungsi Rekursif untuk f(n) = f(n-1) + 1
********************************************/
unsigned int deret1(int n)
{
if (n == 1)
return 1;
else
return (deret1(n-1) + 1);
}
int main()
{
int x;
for (x=1; x<=10; x++)
printf("%4d", deret1(x));
return 0;
}
Hasil eksekusi program diatas adalah sebagai berikut:
Program Rekursi 2 – Bahasa C
#include <stdio.h>
/*******************************************
Fungsi Rekursif untuk f(n) = f(n-1) * 2
********************************************/
unsigned int deret2(int n)
{
if (n == 1)
return 1;
else
return (deret2(n-1) * 2);
}
int main()
{
int x;
for (x=1; x<=10; x++)
printf("%5d", deret2(x));
return 0;
}
Hasil eksekusi program Rekursi 2 adalah sebagai berikut.
Fungsi Rekursif 3 – Bahasa C
#include <stdio.h>
/*******************************************
Fungsi Rekursif untuk f(n) = f(n-2) * 2
********************************************/
unsigned int deret3(int n)
{
if (n == 1)
return 1;
if (n == 2)
return 4;
return (deret3(n-2) * 2);
}
int main()
{
int x;
for (x=1; x<=15; x++)
printf("%5d", deret3(x));
return 0;
}
Hasil eksekusi program Rekursi 3 adalah sebagai berikut.
FYI, untuk menguji ketiga program C diatas, saya menggunakan TCC (Tiny C Compiler). TCC bisa menjalankan kode program C tanpa melalui proses kompilasi. Jadi cukup menyenangkan untuk digunakan sebagai teman coding C untuk menguji program secara cepat.
Nah, sekarang kita akan membuat program rekursi untuk versi bahasa Python.
Program Rekursi 1 – Bahasa Python
def fungsi_rekursi1(n):
if n == 1:
return 1
return fungsi_rekursi1(n-1) + 1
for i in range(1,11):
print ("%3d" % fungsi_rekursi1(i), end='')
print ("\nSelesai.")
Hasil eksekusi dari kode program Rekursi 1 versi bahasa Python adalah sebagai berikut.
Program Rekursi 2 – Bahasa Python
def fungsi_rekursi2(n):
if n == 1:
return 1
return fungsi_rekursi2(n-1) * 2
for i in range(1,11):
print ("%5d" % fungsi_rekursi2(i), end='')
print ("\nSelesai.")
Hasil eksekusi dari program Rekursi 2 versi Python adalah sebagai berikut.
Program Rekursi 3 – Bahasa Python
def fungsi_rekursi3(n):
if n == 1:
return 1
if n == 2:
return 4
return fungsi_rekursi3(n-2) * 2
for i in range(1, 15):
print ("%4d" % fungsi_rekursi3(i), end="")
print ("\nSelesai.")
Hasil eksekusi program Rekursi 3 versi Python adalah sebagai berikut.
Untuk pemrograman Python, saya menggunakan Thonny, IDE Python yang sederhana dan sangat cocok untuk Pemula.
Pelatihan dan Bimbingan Pemrograman
Jika Anda membutuhkan bantuan dalam mempelajari atau menyelesaikan masalah pemrograman, silakan menghubungi melalui Whatsapp 0882-3560-7047.
Baca juga tulisan-tulisan yang lain tentang pemrograman melalui link berikut ini:
https://telinks.wordpress.com/category/softwareprogramming/
Semoga bermanfaat. Selamat belajar. Selamat berkarya.