Socle de statues⚓︎
Sur France-IOI, il y a un exercice Socle de statues.
- Faire cet exercice une première fois avec une solution itérative (une boucle).
- Refaire cet exercice avec une solution récursive.
Volume d'un socle
Pour un socle, dont la base mesure 7 et le haut mesure 3, le volume doit être de
\(\mathcal V = 7×7×1 + 6×6×1 + 5×5×1 + 4×4×1 + 3×3×1\)
\(\mathcal V = 49 + 36 + 25 + 16 + 9\)
\(\mathcal V = 135\)
On demande une fonction qui renvoie le volume pour un socle dont les deux largeurs extrêmes sont données.
Exercice
Compléter la fonction récursive :
###
def volumepy-undsocle(lpy-undbas, lpy-undhaut):bksl-nl ...bksl-nlbksl-nlbksl-nlassert volumepy-undsocle(7, 3) == 135bksl-nlbksl-nl
Réponse
Un socle est constitué :
- d'une base de volume
l_bas * l_bas * 1
- et du reste de
volume_socle(l_bas - 1, l_haut)
🐍 Script Python
def volume_socle(l_bas, l_haut):
"""Volume d'un socle pour statues"""
if l_bas < l_haut:
return 0
else:
volume_base = l_bas * l_bas * 1
return volume_base + volume_socle(l_bas - 1, l_haut)
Un socle est constitué :
- d'un support de volume
l_haut * l_haut * 1
- et du reste de
volume_socle(l_bas, l_haut + 1)
🐍 Script Python
def volume_socle(l_bas, l_haut):
"""Volume d'un socle pour statues"""
if l_bas < l_haut:
return 0
else:
volume_support = l_haut * l_haut * 1
return volume_socle(l_bas, l_haut + 1) + volume_support
Sur France-IOI
On pourra compléter ce code.
🐍 Script Python
def volume_socle(l_bas, l_haut):
...
assert volume_socle(7, 3) == 135
l_bas = int(input())
l_haut = int(input())
print(volume_socle(l_bas, l_haut))