Tuesday, December 4, 2018

Function and Recursion

Halo semua, balik lagi dengan saya nih ^^. Hari ini saya akan membicarakan tentang yang namanya Function dan Recursion

Dalam Modular Programming, program dibagi menjadi beberapa modul. Modul di bahasa C diterapkan menggunakan fungsi. Fungsi dibentuk dari mengelompokan beberapa pernyataan menggunakan fungsi. Modul dibutuhkan ketika beberapa pernyataan sering digunakan oleh codingan yang lain di program, yang dinamakan Sub-Program.

Fungsi dalam C dibedakan menjadi 2, yaitu:
a. Library Function.

Merupakan fungsi standar yang disediakan oleh bahasa C. Fungsi tersebut ditulis di bagian atas file (.h)
Contoh : strlen() di string,h, printf di stdio.h, sqrt() di math.h

b. User-defined Function

Merupakan self-defined function.


* Membuat Fungsi
 
 return-value-type  function-name( parameter-list )
 {
   statements;
 }
return-value-type:  nilai tipe data dikembalikan
•Jika tidak diisi, maka tipe data default akan digunakan (default integer)
•Jika return-value-type adalah void, maka nilai tidak akan dikembalikan oleh fungsi
Parameter-list: daftar nilai yang dikirim oleh funtion inisiator (user)

Fungsi di C biasanya ditulis diatas coding utama. Kalau tidak, kita harus menggunakan Function Prototype. Tujuan Function Prototype adalah untuk memastikan sebuah fungsi diketahui oleh si initiator.


Passing Parameter

Jika sebuah modul tidak mencukupi data/nilai, maka akan dijalankan menggunakan parameter. Ada 2 parameter, yaitu:
a. By-Value, mengirimkan kepada modul lain dari nilainya.
b. By-Location, mengirimkan kepada modul lain dari alamatnya.

Recursive

Recursive adalah sebuah fungsi didalam sebuah fungsi yang memanggil dirinya sendiri. Fungsi recursive cocok untuk masalah recursive.
Contoh:
 n! = 1, for n = 0;
 n! = n * (n-1)!, for n > 0
 4! = 4 * 3!
 3! = 3 * 2!
 2! = 2 * 1!
 1! =  1* 0!
 0! =  1
 Trace back : 4! = 1*2*3*4 = 24

Fungsi recursive mempunyai 2 komponen:
a. Base case
return value(konstan) tanpa memanggil rekursif selanjutnya.

b. Reduction step
sekuensi dari nilai input mengubah dari base case.

No comments:

Post a Comment