Función de swap sin variable aux

3May10

Este es el típico problema que te ponen a veces para probar tu habilidad como programador.

Tienes que hacer una función para cambiar los valores de dos variables sin usar una variable auxiliar.

La función que a todos se nos ocurre és:

function swap($a, $b) {
   $tmp = $a;
   $a = $b;
   $b = $tmp;
}

Pero esta no cumple el enunciado. Una posible función que si cumple el enunciado es la siguiente:

function swap($a, $b) {
   $a = $a + $b;
   $b = $a - $b;
   $a = $a - $b;
}

Edición 05/07/2010:

Juan Antonio Galán, mediante los comentarios me hace llegar esta solución:

function swap($a, $b) {
   list($a, $b) = array($b, $a);
}

Y Víctor me comenta esta otra:

function swap($a, $b) {
   $a ^= $b ^= $a ^= $b;
}

Muchas gracias por vuestra aportación ;) !

There are 2 comments in this article:

  1. 30/06/2010Juan Antonio Galán say:

    Para demostrar que relamente tienes conocimientos de programación en PHP yo propongo esto:

    list($a, $b) = array($b, $a);

    Mejor no?

    Saludos

  2. 4/07/2010Víctor say:

    Te dejo otro sistema que también es interesante:

    $a ^= $b ^= $a ^= $b;

Write a comment: