Ver Mensaje Individual
  #1 (permalink)  
Antiguo 22/05/2013, 06:39
mariamgn
 
Fecha de Ingreso: noviembre-2012
Mensajes: 12
Antigüedad: 11 años, 10 meses
Puntos: 0
Pregunta Tipo de Recursividad?

Hola, amigos, tengo este algoritmo recursivo y estoy en duda si es una Recursion Directa o Anidada?

saludos
Mariam

Código:
int grid[1001][1001], N;
pair<int,int> PuntoInicio, PuntoFinal;

int solve(pair<int,int> actual)
{
    if(actual.first == PuntoInicio.first && actual.second == PuntoInicio.second) 
         return 1; //caso inicio, llegaste al punto de inicio
    if(actual.first < PuntoInicio.first || actual.second < PuntoInicio.second) 
         return 0; //salir del metodo, no hay forma de llegar al punto de inicio desde aqui

    pair < int,int > p1, p2, p3;
    
    p1.first = actual.first - 1;  
    p1.second = actual.second; //punto arriba del q estoy (x-1, y)
    
    p2.first = actual.first;      
    p2.second = actual.second - 1; //punto a la izquierda del q estoy (x, y - 1)
    
    p3.first = actual.first - 1;  
    p3.second = actual.second - 1; //punto en diagonal arriba izquierda del q estoy (x - 1, y - 1)
    
  return solve(p1) + solve(p2) + solve(p3);
}

int main()
{
    cin >> N; 
    cin >> PuntoInicio.first >> PuntoInicio.second; 
    cin >> PuntoFinal.first >> PuntoFinal.second; 
    cout << solve( PuntoFinal ) << endl;
    system("pause");
}