Ver Mensaje Individual
  #3  
Antiguo 17-04-2005
Avatar de roman
roman roman is offline
Moderador
 
Registrado: may 2003
Ubicación: Ciudad de México
Posts: 20.269
Reputación: 10
roman Es un diamante en brutoroman Es un diamante en brutoroman Es un diamante en bruto
Para poder volver al procedimiento x se necesita salir de todos los niveles de recursividad a los que se haya entrado.

Cuando llamas a exit el flujo de la aplicación salta sólo al procedimiento más inmediato que haya llamado, que normalmente no será x, sino el mismo brute dentro del ciclo for y por tanto continúa a la siguiente iteración (en el nivel recursivo anterior) así que tendrías que volver a examinar el valor de final luego de la llamada a brute en el ciclo;

Código Delphi [-]
for ord := 65 to 90 do
begin
  brute(n-1, str+chr(ord));
  if final then exit;
end;

Esto no hace que llegues directamente al procedimiento x sino que genera una llamada a exit "en cascada" que se va transmitiendo hacia arriba en cada nivel de recursividad.

Haz un trazado del código paso a paso y te quedará más claro lo que está sucediendo.

// Saludos
Responder Con Cita