【问题】
现有半美元、四分之一美元、10美分、5美分和1美分共5种硬币。若将1美元换成零钱,共有多少种不同方式?
【思路】
采用递归过程,假定我们所考虑的可用硬币类型种类排了某种顺序,于是就有下面的关系:
将总数为a的现金换成n中硬币的不同方式的数目等于
<span style="font-size:14px;">#include <stdio.h> #include <stdlib.h> int denomination(int kinds) { switch (kinds){ case 1: return 1; case 2: return 5; case 3: return 10; case 4: return 25; case 5: return 50; } } int countChange(int amount, int kinds) { if (amount == 0) return 1; if (amount < 0 || kinds == 0) return 0; return (countChange(amount, kinds - 1) + countChange((amount - denomination(kinds)), kinds)); }</span>
原文地址:http://blog.csdn.net/jjjcainiao/article/details/35837231