Penyeleseian algoritma faktorial dengan Rekursi, adalah suatu proses dari fungsi yang memanggil dirinya sendiri secara berulang-ulang. Karena proses dilakukan berulang-ulang, maka harus ada suatu kondisi yang mengakhiri prosesnya. Jika tidak, maka proses tidak akan pernah berhenti sampai memori yang digunakan tidak dapat menampung lagi.
program faktorial...
Membangun model
Model fungsi faktorial seperti di bawah ini,
Misal: 0! = 1
N! = N x (N – 1)! If N>0
Dalam notasi program
FAC (0) = 1
FAC (N) = N * FAC (N-1) if N>0
Misalnya FAKTORIAL (5) = 5 * FAKTORIAL (4)
Proses dari rekursi ini ini dapat dijelaskan sebagai berikut :
F = 5 * FAKTORIAL(4);
F = 5 * 4 * FAKTORIAL(3);
F = 5 * 4 * 3 * FAKTORIAL(2);
F = 5 * 4 * 3 * 2 * FAKTORIAL(1);
F = 5 * 4 * 3 * 2 * 1;
F= 120;
Model fungsi faktorial seperti di bawah ini,
Misal: 0! = 1
N! = N x (N – 1)! If N>0
Dalam notasi program
FAC (0) = 1
FAC (N) = N * FAC (N-1) if N>0
Misalnya FAKTORIAL (5) = 5 * FAKTORIAL (4)
Proses dari rekursi ini ini dapat dijelaskan sebagai berikut :
F = 5 * FAKTORIAL(4);
F = 5 * 4 * FAKTORIAL(3);
F = 5 * 4 * 3 * FAKTORIAL(2);
F = 5 * 4 * 3 * 2 * FAKTORIAL(1);
F = 5 * 4 * 3 * 2 * 1;
F= 120;
Penjelasan Flowchart
3. Pengecekan jika X atau inputan = int maka lanjut kelangakah 4, apabila bukan int kembali ke langkah 2 dan masukkan inputan yang valid
4. Proses M = 1 nilai perulangan dimulai dari angka 1, F = X!
5. Proses F atau nilai X! = X!*M
6. Pengecekan, apakah M sudah = X!, jika tidak kembali ke langkah 5, M ++, jika Y maka lanjut ke langkah selanjutnya
7. Output F atau nilai factorial X!= (X-1).(x-2).(x-3) . .. M
8. Finish
package daa;
import javax.swing.JOptionPane;
/**
*
* @author eck-wa
*/
public class Faktorial {
public static void main(String[]args) {
String fakT="";
boolean open=false;
double output=1;
int f=0;
while (!open) {
try {
f=Integer.parseInt(JOptionPane.showInputDialog("Masukkan inputan yang akan dicari nilai faktorial : "));
//if(f!=f+"");
open=true;
} catch (Exception e) {
JOptionPane.showMessageDialog(null,"Data Inputan tidak dikenali, masukkan data berupa angka.");
}
}
for(int i=f;i>=1;i--)
{
output=output*i;
if(f !=i)
fakT=fakT+"x"+i;
else
fakT=" = "+fakT+i ;
}
JOptionPane.showMessageDialog(null,""+f+"! "+fakT+" Hasil dari "+f+"! adalah "+output);
System.exit(0);
}}
Tidak ada komentar:
Posting Komentar