Funkcije so koristne tudi zato, ker nam pomagajo organizirati naš program v manjše, razumljivejše in obvladljivejše dele. Če za rešitev nekega problema napišemo več sto vrstic dolgo zaporedje stavkov, se bomo pri tem težko znašli. Ponavadi se izkaže, da je mogoče ta problem razdeliti na več manjših podproblemov, za vsakega od njih napisati svojo funkcijo in te funkcije potem klicati iz glavnega bloka programa.
Kdor pozneje bere glavni blok takega programa, si lahko hitreje in lažje predstavlja, kaj program počne, če pa ga zanimajo podrobnosti reševanja posameznih podproblemov, si lahko potem ogleda še posamezne funkcije.
Enak razmislek lahko ponovimo tudi pri posameznih funkcijah. Čim vidimo, da je neka funkcija dolga več kot nekaj deset vrstic, je to dober znak, da se splača razmisliti, ali jo lahko smiselno razdrobimo na več manjših funkcij.
Temu pristopu k reševanju problemov, pri katerem delimo problem na vse manjše podprobleme, dokler ne pridemo do tako majhnih podproblemov, ki se jih da smiselno rešiti z neko ne predolgo funkcijo, pravimo tudi strukturirano programiranje.
Razdelitev programa na funkcije pride prav tudi pri testiranju in odpravljanju napak. Ko napišemo funkcijo, je koristno, če jo testiramo ločeno od preostanka programa; zaženimo jo na nekaj različnih kombinacijah parametrov in se prepričajmo, ali vrača pravilne rezultate. Ko se tako prepričamo, da funkcija deluje pravilno, lahko nato pri testiranju drugih delov programa, ki to funkcijo uporabljajo, klic te funkcije obravnavamo kot neko osnovno operacijo, za katero vemo, kaj naredi, in se nam vanjo takrat ni treba več poglabljati.
Število tvojih korakov: 0. Najmanjše število korakov,ki so potrebni, za prestavitev stolpa A na stolp C: 0.
Problem hanojskih stolpov je igra oz. uganka s področja razvedrilne matematike, pri kateri moramo premakniti kupček ploščic na drug kupček ploščic (končni stolp) ter pri tem uporabiti najmanjše možno število potez. Upoštevati moramo tudi pravili, da lahko naenkrat premaknemo le eno ploščico in da večje ploščice ne smemo postaviti na manjšo.
Reševanje problema je zelo podobno strukturiranemu programiranju, saj problem razbijamo na podprobleme tako, da: