Example #1
0
function troco($valor, $notas = array(100, 50, 10, 5, 1))
{
    if ($valor <= 0) {
        return array();
    }
    $maior_nota = maior_nota_menor_que_o_valor($valor, $notas);
    if ($maior_nota == 0) {
        return array();
    }
    if (troco($valor - $maior_nota, $notas) >= min($notas)) {
        return array_merge(array($maior_nota), troco($valor - $maior_nota, $notas));
    } else {
        unset($notas[array_search($maior_nota, $notas)]);
        return array_merge(array($maior_nota), troco($valor - $maior_nota, $notas));
    }
    $resultado = array_merge(array($maior_nota), troco($valor - $maior_nota, $notas));
}
Example #2
0
 public function test_troco_de_21_reais_com_notas_10_5_e_2()
 {
     $notas = array(10, 5, 2);
     $this->assertEquals(array(10, 5, 2, 2, 2), troco(21, $notas));
 }