We read every piece of feedback, and take your input very seriously.
To see all available qualifiers, see our documentation.
There was an error while loading. Please reload this page.
1 parent 92265fc commit a4289bfCopy full SHA for a4289bf
算法/动态规划/找硬币-递归版.js
@@ -0,0 +1,31 @@
1
+// https://juejin.im/post/5e86d0ad6fb9a03c387f3342
2
+
3
+/**
4
+ * 动态规划的前置思想,把问题拆分成子问题。
5
+ * 比如f(15),可以拆分成min(
6
+ * f(4) + 11 * 1,
7
+ * f(10) + 5 * 1,
8
+ * f(14) + 1 * 1
9
+ * )
10
+ * 然后这里的f(4)、f(10)、f(14) 进一步按照这个步骤值拆分。
11
+ * @param {number} n
12
+ */
13
+function f(n) {
14
+ if (n === 0) return 0;
15
+ let min = Infinity;
16
+ if (n >= 1) {
17
+ min = Math.min(f(n - 1) + 1, min);
18
+ }
19
20
+ if (n >= 5) {
21
+ min = Math.min(f(n - 5) + 1, min);
22
23
24
+ if (n >= 11) {
25
+ min = Math.min(f(n - 11) + 1, min);
26
27
28
+ return min;
29
+}
30
31
+console.log(f(15)); // 3
0 commit comments