#!/usr/bin/perl use strict; use warnings; my $amount = 16; my $coinset = [5,2]; sub change { my ($cset, $amt) = @_; if ($amt == 0) { return [] } if (@$cset == 0) { return "" } my $coin = shift @$cset; if ($coin > $amt) { print "$coin > $amt\n"; $coin=change($cset, $amt); return$coin if!ref$coin; return[$coin]; } else { print "Checking $amt - $coin\n"; my $rval =change( [$coin, @$cset], $amt - $coin ); return[$coin, @{$rval}]if ref $rval; print "Exception forces backing up to $amt\n"; return [@{change($cset, $amt)}]; } } use Data::Dumper; print Dumper(change($coinset, $amount)), "\n";
In reply to Re^2: pathsearch/backtracking in Perl - how to solve a problem apparently requiring it? (comparison of Perl with Standard ML)
by Anonymous Monk
in thread pathsearch/backtracking in Perl - how to solve a problem apparently requiring it? (comparison of Perl with Standard ML)
by metaperl
| For: | Use: | ||
| & | & | ||
| < | < | ||
| > | > | ||
| [ | [ | ||
| ] | ] |