递归是编程中一个相对难以理解但是却又很重要的概念.
对于从命令式语言开始学习编程的程序员天生对此有理解缺陷, 而对于从类似C++这种对函数式编程范式不友好的语言开始学习编程的程序员就更加如此了.(比如我自己)
碰巧(其实不巧)最近在读这本书(这本书国内没有引进, 网上只有巨贵的亚马逊卖的原版, 我读...
分类:
其他好文 时间:
2014-05-26 16:17:15
阅读次数:
401
题意:给定一棵二叉树,返回按层遍历的结果
思路1:bfs,定义一个新的struct,记录指针向节点的指针和每个节点所在的层
复杂度1:时间O(n),空间O(n)
思路2:dfs
递归函数:
void levelOrder(TreeNode *root, int level, vector<vector >&result)
表示把根为root的树按层存放在result中,其中level表示当前的层数
复杂度2:时间O(n),空间O(n)
相关题目:...
分类:
其他好文 时间:
2014-05-15 14:46:06
阅读次数:
355
题意:给定数字n,生成所有可能的n对括号的组合
思路:dfs暴力枚举
当左括号出现的次数 < n 的时候,可以选择放置新的左括号
当右括号出现的次数 < 左括号的次数的时候,可以选择放置新的右括号
递归函数:
void generateparenthesis(int n, int left, int right, vector& result)
表示将生成的所有可能的n对括号的组合放到result中,
其中,
s表示已生成的部分括号,
left表示当前的左括号数,
right表示当前的右括号...
分类:
其他好文 时间:
2014-05-15 13:21:12
阅读次数:
311
题意:给定一棵perfect binary tree,将它每一个节点的next指针都指向该节点右边的节点
思路:dfs
在connect一棵树的时候,需要知道这棵树的根节点和它右边的节点
1.将树的根节点和它右边的节点连接起来
2.递归地将左子树connect起来,需要知道左子树节点和右子树节点
3.递归地将右子树connect起来,需要知道右子树节点和根右边的节点的左子树节点
递归函数为:
void connect(TreeLinkNode *root, TreeLinkNode *sibling)
表...
分类:
其他好文 时间:
2014-05-15 07:14:04
阅读次数:
289
尾递归定义:
如果一个函数中所有递归形式的调用都出现在函数的末尾,我们称这个递归函数是尾递归的。当递归调用是整个函数体中最后执行的语句且它的返回值不属于表达式的一部分时,这个递归调用就是尾递归。尾递归函数的特点是在回归过程中不用做任何操作,这个特性很重要,因为大多数现代的编译器会利用这种特点自动生成优化的代码。
原理
当编译器检测到一个函数调用是尾递归的时候,它就覆...
分类:
其他好文 时间:
2014-05-15 06:49:43
阅读次数:
278
【1】
#include "stdio.h"
#include "windows.h"
/*
递归调用执行过程:
递归函数调用之前代码(函数的调入):
每次进入都会执行一遍(调用函数后面的都不执行),直到不满足某个条件而退出。
递归函数调用之后代码(函数的返回):
每次退出时执行一遍(调用函数前面的都不再执行)。
传入的参数即局部变量(调用前对参数的访问顺序如54321),将全...
分类:
其他好文 时间:
2014-05-11 18:32:14
阅读次数:
287
主要是针对嵌套列表问题。列表套列表,到底子列表那个更深。。。
这个问题想着就烦。如果嵌套10000万个列表是不是要统计10000个数再排序呢?
最后想了想用 list的extend功能 加上递归函数尝试了一下,代码如下:
l1=[1,'a',[1],[2,3,[4,5,[6,7,[7]]]],[2,5,[5,6]],[4],[5],[6]]
#l1 = [1, 2, [3,...
分类:
编程语言 时间:
2014-05-08 16:11:36
阅读次数:
438
流操作符>、赋值操作符=的返回值、拷贝构造函数的参数、赋值操作符=的参数、递归函数的形参都推荐使用引用。
分类:
其他好文 时间:
2014-05-08 09:48:29
阅读次数:
273
骑士游历:定义了向量的数组M,行数组X,列数组Y,
棋盘plane,计数器count,走动步数step需要注意的是,递归函数的进入前的验证,原先的想法是传入来时的方向参数,可是这样的想法被实践否定了,从理论上看,一个棋子走向哪里是不受它的过去制约的,最近的过去也不例外,详情请见:http://en....
分类:
编程语言 时间:
2014-05-05 12:42:52
阅读次数:
675
awk 中除了函数的参数列表(Argument
List)上的参数(Arguments)外,所有变量不管于何处出现,全被视为全局变量。其生命持续至程序结束——该变量不论在function外或
function内皆可使用,只要变量名称相同所使用的就是同一个变量,直到程序结束。因递归函数内部的变量,.....
分类:
其他好文 时间:
2014-05-04 11:49:11
阅读次数:
316