Function & Recursion
Function (Fungsi)
Merupakan sekelompok kode yang dibuat untuk menjalankan instruksi tertentu. Dalam bahasa C fungsi dibagi menjadi 2, yaitu user-defined function dan library function.User-defined function merupakan fungsi yang dibuat oleh user. Sedangkan library function merupakan fungsi yang sudah tersedia seperti "printf()", "strlen()", "getchar()", dan lain-lain.
Contoh fungsi sederhana untuk mencetak "Hello World!"
return-value-type namanya
{
}
Jika kita memilih void, maka kita tidak perlu lagi menggunakan return karena tipe datanya void (kosong), return dapat digunakan pada return-value-type selain void seperti int, float, double atau char.
Perlu diingat bahwa nilai return bergantung pada return-value-type nya, int jika di return juga akan mengembalikan nilai dengan tipe data int, begitu juga yang lainnya.
Contoh: fungsi untuk menjumlahkan dua buah angka:
Compiler tidak akan membaca fungsi yang berada diluar "main()", sehingga kita perlu panggil fungsi tersebut dalam "main()" dengan mengetik nama fungsinya, jika tidak maka fungsi yang telah kita buat akan diabaikan.
Fungsi jumlah memiliki parameter (int a, int b) sehingga kita juga perlu memasukan suatu nilai (contohnya 3, 4) saat memanggil fungsinya. Fungsi tersebut kemudian akan mengembalikan hasil penjumlahan dari kedua angka tersebut, jika dicetak hasilnya menjadi 7.
Sebagai tambahan, saat menggunakan suatu fungsi, kita juga perlu berhati-hati terhadap variable yang kita gunakan. Variable yang kita deklarasi pada fungsi
Recursion (Rekursi)
Merupakan fungsi yang memanggil dirinya sendiri.
Contoh: program mencari hasil dari n!
Kita perlu memberikan nilai balik pada saat kondisi tertenu, jika tidak maka program akan mengalami infinite loop. Faktorial mengalikan semua bilangan mulai dari n sampai 0, maka kita perlu melakukan validasi jika x menjadi 0 (return 1 karena 0! = 1).
Fungsi faktorial bekerja seperti berikut:
5!
(5 * 4!)
(5 * (4 *3!))
(5 * (4 * (3 * 2!)))
(5 * (4 * (3 * (2 * 1!))))
(5 * (4 * (3 * (2 * (1 * 0!)))))
(5 * (4 * (3 * (2 * (1 * 1)))))
(5 * (4 * (3 * (2 * 1))))
(5 * (4 * (3 * 2)))
(5 * (4 * 6 ))
(5 * 24)
120
2201727222
Binus.ac.id
Skyconnectiva.com
Alexander Christian





Comments
Post a Comment