迭代的是人,递归的是神。—— L.Peter Dautsch1、函数声明
在C++程序里,完成某件工作的一种典型方式就是调用一个函数去做那件事情。定义函数是你刻画怎样完成某个操作的一种方式。一个函数只有在预先声明之后才能调用。
在一个函数声明中,需要给出函数的名字,这个函数返回的值的类型(如果有.....
分类:
其他好文 时间:
2014-05-12 16:43:30
阅读次数:
260
四、递归 递归是函数调用自身的一种特殊的编程技术,其应用主要在以下几个方面: 阶乘
在java当中的基本形式是: Public void mothed(int n){//当满足某条件时: Mothed(n‐1); } 递归二分查找
Java二分查找实现,欢迎大家提...
分类:
编程语言 时间:
2014-05-10 20:13:19
阅读次数:
380
欧几里得算法求最大公约数算法思想:
求p和q的最大公约数,如果q=0,最大公约数就是p;否则,p除以q余数为r,p和q的最大公约数即q和r的最大公约数。 java实现代码: 1 public
class Demo0 { 2 public static void main(String[] ...
分类:
编程语言 时间:
2014-05-06 09:20:44
阅读次数:
434
大意就是: 在1到在10的9次方中,找到各个位数和为固定值s的数的个数,
首先我们确定最高位的个数,为1到9; 以后的各位为0,到9; 运用递归的思想,n位数有n-1位数生成 f(n)(s) +=f(n-1)(s-k)(k=0~9)
可以学习背包问题,直接降到一维表示,注意规划方向,从高到底。 pa...
分类:
其他好文 时间:
2014-05-06 01:10:36
阅读次数:
254
这个题目的递归解法是容易的,但有大量的重复计算,如果不存在没有解码的子串的话,会是指数级的时间复杂度。然而,我们能够通过记录已经计算过的子问题,来降低重复计算,于是有了改进的版本一。但版本一种需要O(n)的空间复杂度。进一步观察问题,发现递推关系其实比较像斐波那契数列,不同之处在于递推关系中的求和是...
分类:
其他好文 时间:
2014-05-06 01:06:01
阅读次数:
361
方法一:DFS递归,判断每一个是否为回文数1,首先要有一个判断字符串是否是回文的函数。容易实现,字符串从两边同时往中间走,看字符是否相同;2,深度优先搜索思想对字符串进行遍历。得到结果。例如,s
= "abacd"; 需要对“a”“ad”“aba”“abac”“abacd”进行深度优先搜索。深度搜索...
分类:
其他好文 时间:
2014-05-06 00:52:34
阅读次数:
388
当客户机上网时,每个人会出去请求DNS服务器解析,为了避免这种网络流量的浪费和网络延迟。需建立一台DNS缓冲服务器,当客户机请求解析缓存中没有的某个域名时,服务器以递归查询的方式将其转交给指定的其他DNS服务器解析,获得查询结果后再返回给客户机,当其他客户机需要再次..
分类:
其他好文 时间:
2014-05-02 03:08:55
阅读次数:
301
strassen算法可以看做是分治递归法求解矩阵乘法的改进。
利用分治递归法求解矩阵乘法的过程大致:
矩阵C = A * B(A、B、C都是n x n矩阵)
可以发现(A11 * B11)、(A12 * B21)……等子矩阵的乘法运算需要继续递归。上面有8个乘法,所以需要递归8次。
时间复杂度关系公式 T(n) = 8T(n/2) + O(n^2),这里8T(n/2)是8次递归...
分类:
其他好文 时间:
2014-05-01 08:43:52
阅读次数:
549
1 Yield生成器
Yield是我在其他语言中没有见过的一个属性,算是python的一大特色,用好之后可以使代码更简洁。考虑一个简单的例子,文件的遍历。要遍历一个目录下的所有文件需要递归的操作。如果我们只是单纯的打印文件名,我们可以在递归的过程中完成,每当发现一个非目录就可以打印文件名。代码如下:
class TraverseDirectory(object):
@s...
分类:
编程语言 时间:
2014-04-30 22:48:40
阅读次数:
312