48 lines
1.3 KiB
Python
48 lines
1.3 KiB
Python
# 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")
|