PDA

View Full Version : Cicli


Unrue
12-10-2005, 21:40
Salve ragazzi,
una domanda bovina sui cicli. i vari while, do e for, sono procedure ricorsive?

recoil
12-10-2005, 21:52
no
in quel caso si parla di iterazione, la ricorsione è un'altra cosa

Unrue
12-10-2005, 21:58
no
in quel caso si parla di iterazione, la ricorsione è un'altra cosa

Ah ok ,quindi sono procedure iterative. Grazie. Un'altra cosa: uno stack overflow, che è tipico errore di procedure ricorsive, può avvenire anche per funzioni iterative?

VegetaSSJ5
12-10-2005, 22:12
scusate ma lo stack overflow è l'errore che avviene quando una funzione ricorsiva viene eseguita "infinite" volte vero?

repne scasb
13-10-2005, 10:01
scusate ma lo stack overflow è l'errore che avviene quando una funzione ricorsiva viene eseguita "infinite" volte vero?

Non e' necessario che venga eseguita infinite volte, ma un numero di volte sufficienti per "consumare" la memoria, allocata dal sistema, ad uso dello stack. Consumato lo stack, e' possibile (in mancanza di meccanismi di protezione sia software che hardware), una sovrascrittura di zone di memoria che il sistema non "ritiene" ad uso dello stack (codice, dati...), con risultati inpredicibili.

Anche un sovraccarico dello stack puo' generare una stack overflow (100 bytes di stack e funzione che utilizza 104 bytes di stack), come una funzione non ricorsiva mal disegnata (ad ogni esecuzione perde 4 byte di stack, dopo 'n' chiamate (n=dimensione stack/4), andra anch'essa in overflow, ed in questo caso in modo subdolamente erratico).

VegetaSSJ5
13-10-2005, 11:19
Non e' necessario che venga eseguita infinite volte, ma un numero di volte sufficienti per "consumare" la memoria, allocata dal sistema, ad uso dello stack.
si infatti avevo scritto infinite tra virgolette. ;)
per il resto sempre precisa come al solito... :)