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)); }
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)); }