固定第一个字符,递归取得首位后面的各种字符串组合; * 再把第一个字符与后面每一个字符交换,并同样递归获得首位后面的字符串组合; *递归的出口,就是只剩一个字符的时候,递归的循环过程,就是从每个子串的第二个字符开始依次与第一个字符交换,然后继续处理子串。 * * 假如有重复值呢? * *由于全排列就 ...
分类:
编程语言 时间:
2016-10-20 12:12:59
阅读次数:
190
一.起源: 汉诺塔(又称河内塔)问题是源于印度一个古老传说的益智玩具。大梵天创造世界的时候做了三根金刚石柱子,在一根柱子上从下往上按照大小顺序摞着64片黄金圆盘。大梵天命令婆罗门把圆盘从下面开始按大小顺序重新摆放在另一根柱子上。并且规定,在小圆盘上不能放大圆盘,在三根柱子之间一次只能移动一个圆盘。 ...
分类:
编程语言 时间:
2016-10-16 07:46:42
阅读次数:
1191
本节大纲 迭代器&生成器 装饰器 基本装饰器 多参数装饰器 递归 算法基础:二分查找、二维数组转换 正则表达式 常用模块学习 作业:计算器开发 实现加减乘除及拓号优先级解析 用户输入 1 - 2 * ( (60-30 +(-40/5) * (9-2*5/3 + 7 /3*99/4*2998 +10 ...
分类:
编程语言 时间:
2016-10-14 17:31:50
阅读次数:
262
快速排序 1、思想 快速排序将一个数组分成两个数组,再对两个数组独立排序,是个递归算法。 首先随机选出一个切分元素temp(一般为这个数组的第一个元素),将小于temp的数放在temp的左边,将大于temp的数放在temp的右边。 快排和堆排序很像,他们都是将一个数组分成两个子数组,都属于递归算法。 ...
分类:
编程语言 时间:
2016-10-09 13:28:00
阅读次数:
165
递归算法:n个元素的全排列=n x (n-1)个元素的全排列。 非递归算法:求一个排列的下一个字典序排列,stl已经有的next_permutation()函数。 讲道理非递归效率应该比递归要高…… ...
分类:
编程语言 时间:
2016-09-30 02:41:45
阅读次数:
215
斐波那契数列的实现(简单递归和动态规划) 一、简单递归的实现 求解斐波那契数列当中的n=5时的值这个问题的递归树如下图所示: 可见递归算法由于会多次计算同样的子问题而出现效率低下的问题,为了避免重复计算子问题,提升算法的效率,可以使用动态规划的思维来改进算法。 二、动态规划算法 1、具有备忘功能的自 ...
分类:
其他好文 时间:
2016-09-29 11:17:53
阅读次数:
237
走迷宫需要考虑大量的实验和错误:沿着一条路径走,当不能再向前走时回溯,然后尝试另一条以前没尝试过的选择。可是使用递归算法。 1 public class MaseSearch 2 { 3 Mase laby = new Mase(); ...
分类:
编程语言 时间:
2016-09-28 16:23:00
阅读次数:
115
前言: 分治法是一种算法设计思想,所谓分治,意为分而治之,是指将一个难以直接解决的大问题,递归的分割成一些规模的较小的问题,以便逐个解决。采用分治法设计的算法通常用到递归算法来实现,故标题为递归分治。 归并排序算法 归并就是将两个或两个以上的有序表合并成一个新的有序表。归并排序就是将无序的待排序的序 ...
分类:
编程语言 时间:
2016-09-26 21:29:20
阅读次数:
157
递归(recursion):程序调用自身的编程技巧。 递归满足2个条件: 1)有反复执行的过程(调用自身) 2)有跳出反复执行过程的条件(递归出口) 递归例子: (1)阶乘 n! = n * (n-1) * (n-2) * ...* 1(n>0) (2)河内塔问题 (3)全排列 从n个不同元素中任取 ...
分类:
编程语言 时间:
2016-09-26 16:12:41
阅读次数:
160
公园里有一些桃子,猴子每天吃掉一半,扔掉一个烂的,第6天的时候发现剩余1个,问一开始有多少个桃子1、var sy=1;for(i=0;i<6;i++){ sy=(sy+1)*2; }2.递归算法: function ShuLiang(n){ if(n==6) { return 1; } var sl ...
分类:
编程语言 时间:
2016-09-21 23:12:43
阅读次数:
280