uris77
8/23/2013 - 5:14 AM

change.scala

def countChange(money: Int, coins: List[Int]): Int = {    
    def compare(a: Int, b: Int) = {
      if (a == b) "=="
      else if (a > b) ">"
      else "<"
    }
    
    def calculateChange(sum: Int, coins: List[Int]): Int = {
      if (coins.isEmpty) 0
      else
        compare(sum + coins.head, money) match{
        	case "==" => 1 + calculateChange(sum, coins.tail)
        	case ">" => calculateChange(sum, coins.tail)
        	case _ => calculateChange(coins.head + sum, coins) + calculateChange(sum, coins.tail)
      }
    }
    calculateChange(0, coins)
  }
}