First
This commit is contained in:
47
Tugas/recrusive.py
Normal file
47
Tugas/recrusive.py
Normal file
@@ -0,0 +1,47 @@
|
||||
# Data Mahasiswa
|
||||
data_mahasiswa = [
|
||||
{"nim": "101", "nama": "Budi", "ipk": 3.2},
|
||||
{"nim": "102", "nama": "Ani", "ipk": 3.8},
|
||||
{"nim": "103", "nama": "Candra", "ipk": 2.9},
|
||||
{"nim": "104", "nama": "Dewi", "ipk": 3.5},
|
||||
]
|
||||
|
||||
|
||||
# === CONTOH 1: MENCETAK NAMA ===
|
||||
def cetak_nama_rekursif(list_mhs):
|
||||
# 1. Kasus Dasar (Base Case)
|
||||
if not list_mhs:
|
||||
return
|
||||
|
||||
# 2. Langkah Rekursif (Recursive Step)
|
||||
mahasiswa_pertama = list_mhs[0]
|
||||
print(f"- {mahasiswa_pertama['nama']} (NIM: {mahasiswa_pertama['nim']})")
|
||||
cetak_nama_rekursif(list_mhs[1:])
|
||||
|
||||
|
||||
print("### Daftar Nama Mahasiswa ###")
|
||||
cetak_nama_rekursif(data_mahasiswa)
|
||||
|
||||
|
||||
# === CONTOH 2: MENGHITUNG IPK > 3.0 ===
|
||||
def hitung_ipk_di_atas(list_mhs, batas_ipk=3.0):
|
||||
# 1. Kasus Dasar (Base Case)
|
||||
if not list_mhs:
|
||||
return 0
|
||||
|
||||
# 2. Langkah Rekursif (Recursive Step)
|
||||
mahasiswa_pertama = list_mhs[0]
|
||||
sisa_list = list_mhs[1:]
|
||||
|
||||
jumlah_dari_sisa = hitung_ipk_di_atas(sisa_list, batas_ipk)
|
||||
|
||||
if mahasiswa_pertama["ipk"] > batas_ipk:
|
||||
return 1 + jumlah_dari_sisa
|
||||
else:
|
||||
return 0 + jumlah_dari_sisa
|
||||
|
||||
|
||||
# Menjalankan fungsi
|
||||
jumlah_lulus = hitung_ipk_di_atas(data_mahasiswa, 3.0)
|
||||
print(f"\n### Jumlah Mahasiswa dengan IPK > 3.0 ###")
|
||||
print(f"Total: {jumlah_lulus} mahasiswa")
|
||||
Reference in New Issue
Block a user