MCPcopy Create free account
hub / github.com/QMHTMY/RustBook / rec_mc1

Function rec_mc1

code/chapter04/rec_mc1.rs:3–26  ·  view source on GitHub ↗
(cashes: &[u32], amount: u32)

Source from the content-addressed store, hash-verified

1// rec_mc1.rc
2
3fn rec_mc1(cashes: &[u32], amount: u32) -> u32 {
4 // 全用 1 元纸币时的最少找零纸币数
5 let mut min_cashes = amount;
6
7 if cashes.contains(&amount) {
8 return 1;
9 } else {
10 // 提取符合条件的币值 (找零币值肯定小于等于找零值)
11 for c in cashes.iter()
12 .filter(|&c| *c <= amount)
13 .collect::<Vec<&u32>>() {
14 // amount 减去 c,表示使用了一个面额为 c 的纸币
15 // 所以要加 1
16 let num_cashes = 1 + rec_mc1(&cashes, amount - c);
17
18 // num_cashes 若比 min_cashes 小则更新
19 if num_cashes < min_cashes {
20 min_cashes = num_cashes;
21 }
22 }
23 }
24
25 min_cashes
26}
27
28fn main() {
29 // cashes 保存各种面额的纸币

Callers 1

mainFunction · 0.70

Calls 2

containsMethod · 0.45
iterMethod · 0.45

Tested by

no test coverage detected