Lahko, in sicer takole:
{
def bisekcija_rekurzija(tabela_stevil, k, zacetek = None, konec = None):
if zacetek == None: #definiramo interval pri prvemu klicu
zacetek = max(tabela_stevil)
konec = sum(tabela_stevil)
if zacetek > konec: #zaustavitveni pogoj, ki je bil prej v pogoju while zanke
return float('inf')
#enako kot prej izračunamo najmanjše število delitev, da je maksimalna vsota namjša ali enaka sredini
sredina = (zacetek + konec) // 2
vsota = 0
stevec = 1
for i in range(len(tabela_stevil)):
if vsota + tabela_stevil[i] > sredina:
stevec += 1
vsota = tabela_stevil[i]
else:
vsota += tabela_stevil[i]
#namesto da spremenimo interval in gremo naprej v zanki, rekurzivno pokličemo funkcijo s spremenjenim intervalom
if stevec <= k:
odgovor = min(sredina, bisekcija_rekurzija(tabela_stevil, k, zacetek, sredina - 1))
else:
odgovor = bisekcija_rekurzija(tabela_stevil, k, sredina + 1, konec)
return odgovor
}
Hitrost reševanja se pa ne spremeni, saj s tem nismo nič zmanjšali števila operacij, samo namesto while zanke smo uporabili rekurzijo.