Berikut ini adalah pertanyaan dari 4dministraktor pada mata pelajaran TI untuk jenjang Sekolah Menengah Atas
2. Buatlah program (C/C++/Python) yang mengimplementasikan kedua relasi rekurens tersebut dalam bentuk fungsi rekursif, dan lakukan test dengan beberapa kasus.
Jawaban dan Penjelasan
Berikut ini adalah pilihan jawaban terbaik dari pertanyaan diatas.
(Jawaban soal nomor 1 ada di bagian Pembahasan.)
Kode Program (Python)
import random
def tambah(a, b) -> int:
if b == 0:
return a
if b < 0:
return kurang(a, abs(b))
return tambah(a, b-1) + 1
def kurang(a, b) -> int:
if b == 0:
return a
if b < 0:
return tambah(a, abs(b))
return kurang(a, b-1) - 1
### Program Utama
print('PENJUMLAHAN')
for i in range(0, 10):
a = random.randint(-99, 99)
b = random.randint(-99, 99)
print(f'⁍ {a:3d} + {b:3d} = {tambah(a, b)}')
print('PENGURANGAN')
for i in range(0, 10):
a = random.randint(-99, 99)
b = random.randint(-99, 99)
print(f'⁍ {a:3d} - {b:3d} = {kurang(a, b)}')
______________
Contoh Output Hasil Eksekusi
PENJUMLAHAN
⁍ 91 + 81 = 172
⁍ 99 + 84 = 183
⁍ 78 + -22 = 56
⁍ -96 + 63 = -33
⁍ -41 + 67 = 26
⁍ 56 + -71 = -15
⁍ -94 + -34 = -128
⁍ 37 + 81 = 118
⁍ -44 + 40 = -4
⁍ -91 + 38 = -53
PENGURANGAN
⁍ -43 - 47 = -90
⁍ 8 - 27 = -19
⁍ 31 - -95 = 126
⁍ 58 - -58 = 116
⁍ 88 - -49 = 137
⁍ 58 - -98 = 156
⁍ 40 - 76 = -36
⁍ 84 - -9 = 93
⁍ -66 - 88 = -154
⁍ 34 - 54 = -20
______________
Pembahasan
Sebelum mendefinisikan operasi aritmetika penjumlahan dan pengurangan bilangan bulat, terlebih dahulu kita ingat sifat identitas penjumlahan dan pengurangan, yaitu:
Sifat identitas tersebut menjadi "basis" dari relasi rekurens yang akan didefinisikan.
Maka, dalam bentuk notasi fungsional, operasi penjumlahan dan pengurangan bilangan bulat dan dapat didefinisikan secara simultan (bersama-sama) dengan:
Karena kita telah memiliki definisi relasi rekurens dalam bentuk notasi fungsional, fungsi rekursif yang perlu diimplementasikan dalam bentuk program merupakan "translasi langsung" dari notasi fungsionalnya, yaitu:
def tambah(a, b) -> int:
if b == 0:
return a
if b < 0:
return kurang(a, abs(b))
return tambah(a, b-1) + 1
def kurang(a, b) -> int:
if b == 0:
return a
if b < 0:
return tambah(a, abs(b))
return kurang(a, b-1) - 1
Pada program di atas, bilangan a dan b dihasilkan secara acak (random), dengan menggunakan method randint()dari packagerandom pada Python.
Semoga dengan pertanyaan yang sudah terjawab oleh henriyulianto dapat membantu memudahkan mengerjakan soal, tugas dan PR sekolah kalian.
Apabila terdapat kesalahan dalam mengerjakan soal, silahkan koreksi jawaban dengan mengirimkan email ke yomemimo.com melalui halaman Contact
Last Update: Wed, 16 Nov 22