Anda di halaman 1dari 14

Kuis 09 - Recursion

Review of attempt 1

Started on

Completed on

Time taken

Saturday, 15 November 2014, 12:17 AM

Sunday, 16 November 2014, 09:01 PM

1 day 20 hours

Marks

19/20

Grade

95 out of a maximum of 100 (95%)

Question1
Marks: 1
Lihat potongan program dibawah ini!

public boolean superMisteriNyem(int start, int[] nums, int


target)
{
if (start >= nums.length) return target == 0;
if (nums[start] % 5 == 0)
{
if (start < nums.length - 1 && nums[start + 1] == 1)
return superMisteriNyem(start + 2, nums, target - nums[start]);
return superMisteriNyem(start + 1, nums, target nums[start]);
}

return superMisteriNyem(start + 1, nums, target - nums[start])


|| superMisteriNyem(start + 1, nums, target);

Apa hasil dari superMisteriNyem(0, {2, 5, 10, 4}, 11);


Answer:
false

Correct

Marks for this submission: 1/1.

Question2
Marks: 1

Perhatikan method berikut,

public String mystery4(String str) {


final int len = str.length();
if (len < 2) {
return str;
} else {
String head = str.substring (0, len / 2);
String tail = str.substring (len / 2);
return mystery4 (tail) + mystery4 (head);
}
}

Jika dilakukan pencetakan pada pemanggilan method mystery4("YALPDLOC") maka keluarannya adalah?
Cat: Tulis "error" (tanpa tanda kutip) jika terjadi recursion error
Answer:
COLDPLAY

Correct

Marks for this submission: 1/1.

Question3
Marks: 1
Tidak boleh ada iterasi di dalam method rekursif
Answer:
True
Correct

False

Marks for this submission: 1/1.

Question4

Marks: 1
Perhatikan method berikut,

public static int method1(int n) {


if (n == 0)
return 0;

return method1(n-1) + 2*n - 1;


}

Apa yang dilakukan method di atas?


Choose one answer.
a. Menghitung n pangkat 2
b. Menghitung n pangkat 3
c. Menghitung n pangkat n
d. Menghitung 2 * n faktorial
e. Menghitung n tambah n
Correct

Marks for this submission: 1/1.

Question5
Marks: 1
Implementasi rekursif di sistem komputer biasanya menggunakan suatu struktur data yang disebut _______.
Answer:
stack

Correct

Marks for this submission: 1/1.

Question6
Marks: 1
semua masalah akan lebih mudah jika di selesaikan dengan menggunakan for loop dibandingkan dengan rekursif
Answer:
True
Correct

False

Marks for this submission: 1/1.

Question7
Marks: 1
Lengkapilah potongan kode rekursif di bawah ini !

public String mystery(String str, int start, int end)


if (start == end)
return "";
else {
char c = ________; // 1
return c + ________; // 2
}

Untuk mengembalikan substring str dari start sampai end.Isi kode baris 1 saja!
mystery("waduh", 2, 5) akan mengembalikan duh.
Cat:Jawab tanpa menggunakan spasi.
Contoh: mystery(1,2,3)
Answer:
str.charAt(start)

Correct

Marks for this submission: 1/1.

Question8
Marks: 1
Algoritma rekursif terdiri dari 1 base case dan 1 recurrent case
Answer:
True

False

Correct

Marks for this submission: 1/1.

Question9
Marks: 1
Perhatikan method berikut,

public boolean secret(String s) {


if (s.length() <= 1) {

return true;
} else if (s.charAt(0) != s.charAt(s.length() - 1)) {
return false;
} else {
return secret (s.substring(1, s.length() - 1));
}
}

Jika dilakukan pencetakan pada pemanggilan method secret("bacascab") maka keluarannya adalah?
Cat: Tulis "error" (tanpa tanda kutip) jika terjadi recursion error
Answer:
false

Correct

Marks for this submission: 1/1.

Question10
Marks: 1
Error karena kehabisan memori hanya terjadi saat implementasi rekursif kita salah.
Answer:
True

False

Correct

Marks for this submission: 1/1.

Question11
Marks: 1
________ adalah sebuah method yang memanggil dirinya sendiri secara langsung atau tidak langsung.
Answer:
rekursif

Correct

Marks for this submission: 1/1.

Question12
Marks: 1
Perhatikan method berikut,

public int mistery (int a, int b){

if (b == 0){
return a;
} else {
return mistery (b, a % b);
}
}

Jika dilakukan pencetakan pada pemanggilan method mistery(6,9) maka keluarannya adalah?
Cat: Tulis "error" (tanpa tanda kutip) jika terjadi recursion error
Answer:
3

Correct

Marks for this submission: 1/1.

Question13
Marks: 1
Perhatikan method berikut,

public int secret (int n) {


if (n == 0) {
return 0;
} else {
if (n % 2 == 0) {
return 3 + secret (n - 1);
} else {
return 2 + secret (n - 1);
}
}
}

Jika dilakukan pencetakan pada pemanggilan method secret(7) maka keluarannya adalah?
Cat: Tulis "error" (tanpa tanda kutip) jika terjadi recursion error

Answer:
17

Correct

Marks for this submission: 1/1.

Question14
Marks: 1
Semua algoritma rekursif dapat diubah menjadi algoritma iteratif
Answer:
True

False

Correct

Marks for this submission: 1/1.

Question15
Marks: 1
Apa output dari program dibawah

public String mysteryNyem(String str)


{
if (str.length() <= 1) return str.length() == 1 ?
str.charAt(0)+"": "";
else return str.charAt(0) == str.charAt(1) ?
str.charAt(0) + "*" + mysteryNyem(str.substring(1)):str.charAt(0) +
mysteryNyem(str.substring(1));
}

Apabila dilakukan pemanggilan mysteryNyem("hhihihhihhixxhihixynyemnyemhihi");


Answer:
h*hihih*hih*hix*xhihixynyemnyemhihi

Correct

Marks for this submission: 1/1.

Question16
Marks: 1
Apa hasil dari baris ke 6 program dibawah ini?

// Nyem berekreasi ke Russia minggu ini. Dia mempelajari sebuah teknik


berhitung baru yang dia pelajari di Russia

public static void main(String[] args)


{

int x = 55;
int y = 64;
int total = nyem1(x, y, 0);
System.out.println(total);
}

public static int nyem1(int x, int y, int total)


{
System.out.println(x + " " + y + " " + total);
if(x == 0)
{
return total;
}
else
{
if(x % 2 == 1)
{
return nyem1(x/2, y*2, total + y);
}

else
{
return nyem1(x/2, y*2, total);
}
}
}

Answer:
1 2048 1472

Correct

Marks for this submission: 1/1.

Question17
Marks: 1
Apa output dari program dibawah ini

public static boolean arrayNyem(int[] nums, int index) {


if (nums.length == 0 || nums.length == index) return false;
if (index > 0 )
{
if (nums[index] == 10*nums[index-1]) return true;
else return arrayNyem(nums,index+1);
}
else return arrayNyem(nums,index+1);
}

public static void main (String [] args)


{
System.out.println(arrayNyem({1, 2, 3, 4, 4, 50, 500, 6}, 0));
}

Choose one answer.


a. [stack overflow]
b. [compile error]
c. [true]
d. [array index out of bound]
e. [false]
Incorrect

Marks for this submission: 0/1.

Question18
Marks: 1
Lengkapilah kode di bawah ini

public String snitch(char c, int n) {


if(n == 1)
return c + "";
else
return __________;
}

Untuk mengembalikan string yang merupakan duplikasi char c sebanyak n kali.


Cat:Jawab tanpa menggunakan spasi. Tidak perlu mengubah c menjadi String terlebih dahulu.
Contoh: tes(n-1)+tes(n-2)
Answer:
c+snitch(c,n-1)

Correct

Marks for this submission: 1/1.

Question19
Marks: 1
Berapa kali pemanggilan rekursif terhadap nyem1 dilakukan jika nyem1(265, 44, 0) dijalankan? Asumsikan
pemanggilan nyem1 pertama juga dihitung!

// Nyem berekreasi ke Russia minggu ini. Dia mempelajari sebuah teknik


berhitung baru yang dia pelajari di Russia

public static void main(String[] args)


{
int x = 55;
int y = 64;
int total = nyem1(x, y, 0);
System.out.println(total);
}

public static int nyem1(int x, int y, int total)

{
System.out.println(x + " " + y + " " + total);
if(x == 0)
{
return total;
}
else
{
if(x % 2 == 1)
{
return nyem1(x/2, y*2, total + y);
}

else
{
return nyem1(x/2, y*2, total);
}
}
}

Answer:
10

Correct

Marks for this submission: 1/1.

Question20
Marks: 1

class DoSomething {

static public void DoSomethingLast(int [] numbers, int left, int mid,


int right)

{
int [] temp = new int[25];
int i, left_end, num_elements, tmp_pos;

left_end = (mid - 1);


tmp_pos = left;
num_elements = (right - left + 1);

while ((left <= left_end) && (mid <= right))


{
if (numbers[left] <= numbers[mid])
temp[tmp_pos++] = numbers[left++];
else
temp[tmp_pos++] = numbers[mid++];
}

while (left <= left_end)


temp[tmp_pos++] = numbers[left++];

while (mid <= right)


temp[tmp_pos++] = numbers[mid++];

for (i = 0; i < num_elements; i++)


{
numbers[right] = temp[right];
right--;
}
}

static public void DoSomething(int [] numbers, int left, int right)


{
int mid;

if (right > left)


{
mid = (right + left) / 2;
DoSomething(numbers, left, mid);
DoSomething(numbers, (mid + 1), right);

DoSomethingLast(numbers, left, (mid+1), right);


}
}

public static void main(String[] args)


{
int[] numbers = { 3, 8, 7, 12, 2, 1, 9, 2, 4 };
int len = 9;

DoSomething(numbers, 0, len - 1);


for (int i = 0; i < 9; i++)
System.out.print(numbers[i]+ " ");

Apa output dari program diatas?

Choose one answer.


a. 12 9 8 7 4 3 2 2 1
b. 3 8 7 12 2 1 9 2 4
c. 1 2 2 3 4 7 8 9 12
d. 3 7 8 12 2 1 9 4 2
e. 4 2 9 1 2 12 7 8 3
Correct

Marks for this submission: 1/1.

Anda mungkin juga menyukai