递归和动态规划
cyyyyyh
这个作者很懒,什么都没留下…
展开
-
汉诺塔问题
目标:将A上面的方块移动到C上面 并且不能将大的方块落到小的方块上面 注意:灵魂画手已出现 共经历了七部 大中小 ---- 123 一个盘子:大到3 两个盘子:小到2 大到3 小到3 三个盘子:小到3 中到2 小到2 大到3 小到1 中到3 小到3 以此类推: 总移动步数:2**n - 1 大于三个盘子:可以理解成一个整体 然后按照两个盘子去思考 public static void han...原创 2019-04-17 19:43:34 · 157 阅读 · 0 评论 -
理解递归
自己调用自己。。 系统内部是怎么实现的 看下引例 //返回数组的最大值 -- 递归方式 public static int getMax(int[] arr, int L, int R) { if (L == R) { //明确终止条件 return arr[L]; } int mid = (L + R) / 2; int maxLeft = getMax(arr...原创 2019-04-18 19:00:11 · 143 阅读 · 0 评论 -
仅用递归函数和栈操作逆序一个数
之前用两个栈可以实现队列 使用两个栈就直接一个pop()另一个进行push()就可以了 归根到底就是把栈底元素放到栈顶才可以 这里可以理解为就是使用递归函数来代替另一个栈 首先写一个递归输出栈底元素的递归函数 弹出栈顶元素还要将剩下的元素原封不动放回去 public static int getAndRemoveLastElement(Stack<Integer> stack) { ...原创 2019-04-16 19:01:33 · 125 阅读 · 0 评论