DAA Tugas1 C14220339 C14220230
DAA Tugas1 C14220339 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
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
PROCEDURE main()
hari : integer
OUTPUT "Input: "
INPUT hari
hitungJumlahTanaman(hari, 1, 0, 0, 0, 1)
END PROCEDURE
JAVA
import java.util.Scanner;
PSEUDOCODE
PROCEDURE main()
OUTPUT "Input: "
INPUT jumlahTanamanJendral
totalEmas = hitungJumlahEmas(jumlahTanamanJendral)
OUTPUT totalEmas
END PROCEDURE
JAVA
import java.util.Scanner;