Anda di halaman 1dari 5

TUGAS 1 GARDENING WITH ME

Asisten Dosen : Jessica Felice Darmawan


Mata Kuliah : Responsi Design Analisis dan Algoritma
Kelas :A

Kelompok : 1. Felix Petra Sanjaya / C14220339


2. Nadya Ribena Sutanto / C14220230

Soal :

William merupakan ilmuan tanaman yang sangat pintar, suatu hari ia berhasil membuat
tanaman spesial yang dapat memberi dia kekayaan. Namun ia hanya berhasil membuat
1 bibit tanaman ini.

Tanaman ini spesial karena kemampuan pertumbuhannya yang luar biasa dengan 3
fase (tunas, prajurit, jendral, raja):
● Tanaman dapat tumbuh ke fase berikutnya dengan waktu 1 hari saja.
● (tunas->prajurit, prajurit->jendral,jendral->raja)
● Untuk tanaman raja, setiap harinya akan selalu menghasilkan tunas baru.
● Tanaman tingkat raja tidak akan pernah mati.

1. Hari ini bibit yang William tanam telah bertunas. Sekarang William membutuhkan
sebuah program yang dapat membantunya menghitung jumlah tanaman prajurit, jendral,
dan raja yang ia miliki pada hari ke-X. Bantulah William untuk membuat program
tersebut memanfaatkan metode rekursi.
Contoh :

Input : 1
Output :
Hari ke-1 : 1 tunas

Input : 6
Output :
Hari ke-1 : 1 tunas
Hari ke-2 : 1 prajurit
Hari ke-3 : 1 jendral
Hari ke-4 : 1 raja
Hari ke-5 : 1 raja, 1 tunas //tanaman raja menghasilkan tunas baru
Hari ke-6 :1 raja, 1 prajurit, 1 tunas //tanaman raja menghasilkan tunas baru, tunas
tumbuh jadi tanaman prajurit

2. Seperti yang tertera diatas, tanaman ini dapat memberikan William kekayaan. Hal ini
berasal dari emas yang dihasilkan oleh tanaman ini. Anehnya tanaman ini hanya dapat
menghasilkan 5 emas seumur hidup tanaman ini dan hanya pada fase jendral. Oleh
karena itu bantulah William menghitung berapa jumlah emas yang bisa ia dapatkan jika
memiliki X menggunakan metode rekursi untuk perhitungan jumlah emas! (tidak boleh
menggunakan metode kali)
Contoh:

Input:1
Output:
5

Input:5
Output:
25

Jawaban :

1.

PSEUDOCODE

FUNCTION hitungJumlahTanaman(hari, tunas, prajurit, jendral, raja, counter)


IF hari = 0 THEN
RETURN 0
END IF

OUTPUT "Hari ke-" + counter + ": "

IF raja = 0 THEN
IF tunas > 0 THEN
OUTPUT tunas + " tunas"
END IF
IF prajurit > 0 THEN
OUTPUT prajurit + " prajurit"
END IF
IF jendral > 0 THEN
OUTPUT jendral + " jendral"
END IF
ELSE
OUTPUT raja + " raja"
IF tunas > 0 THEN
OUTPUT ", " + tunas + " tunas"
END IF
IF prajurit > 0 THEN
OUTPUT ", " + prajurit + " prajurit"
END IF
IF jendral > 0 THEN
OUTPUT ", " + jendral + " jendral"
END IF
END IF

RETURN hitungJumlahTanaman(hari - 1, raja, tunas, prajurit, jendral + raja,


counter + 1)
END FUNCTION

PROCEDURE main()
hari : integer
OUTPUT "Input: "
INPUT hari
hitungJumlahTanaman(hari, 1, 0, 0, 0, 1)
END PROCEDURE

JAVA

import java.util.Scanner;

public class No1 {


public static int hitungJumlahTanaman(int hari, int tunas, int prajurit,
int jendral, int raja, int counter) {
if (hari == 0) {
return 0;
}
System.out.print("Hari ke-" + counter + ": ");
if (raja == 0) {
if (tunas > 0) {
System.out.print(tunas + " tunas");
}
if (prajurit > 0) {
System.out.print(prajurit + " prajurit");
}
if (jendral > 0) {
System.out.print(jendral + " jendral");
}
} else {
System.out.print(raja + " raja");
if (tunas > 0) {
System.out.print(", " + tunas + " tunas");
}
if (prajurit > 0) {
System.out.print(", " + prajurit + " prajurit");
}
if (jendral > 0) {
System.out.print(", " + jendral + " jendral");
}
}
System.out.println();
/*
* Raja -> Tunas
* Tunas -> Prajurit
* Prajurit -> Jendral
* Jendral + Raja -> Raja
*/
return hitungJumlahTanaman(hari - 1, raja, tunas, prajurit, jendral +
raja, counter + 1);
}

public static void main(String[] args) {


Scanner sc = new Scanner(System.in);
System.out.print("Input: ");
int hari = sc.nextInt();
hitungJumlahTanaman(hari, 1, 0, 0, 0, 1);
}
}
2.

PSEUDOCODE

FUNCTION integer hitungJumlahEmas(jumlahTanamanJendral: integer)


IF jumlahTanamanJendral = 0 THEN
RETURN 0
ELSE
RETURN hitungJumlahEmas(jumlahTanamanJendral - 1) + 5
END IF
END FUNCTION

PROCEDURE main()
OUTPUT "Input: "
INPUT jumlahTanamanJendral
totalEmas = hitungJumlahEmas(jumlahTanamanJendral)
OUTPUT totalEmas
END PROCEDURE

JAVA

import java.util.Scanner;

public class no2 {


public static int EmasJendral(int n) {
// Base case ( n==0 ) :
if (n == 0) {
return 0;
}
return 5 + EmasJendral(n - 1);
}

public static void main(String[] args) {


Scanner input = new Scanner(System.in);
System.out.println(EmasJendral(input.nextInt()));
}
}

Anda mungkin juga menyukai