一、递归和迭代 1、递归:(问路示例) 递归算法是一种直接或者间接地调用自身算法的过程。在计算机编写程序中,递归算法对解决一大类问题是十分有效的,它往往使算法的描述简洁而且易于理解。 2、迭代:简单理解为更新换代( 儿子生孙子的故事) 二、迭代器协议 1.迭代器协议是指:对象必须提供一个next方法 ...
分类:
编程语言 时间:
2016-12-06 02:28:58
阅读次数:
261
http://blog.csdn.net/effective_coder/article/details/8742979 递归算法详解 C语言通过运行时堆栈来支持递归的调用,在我们刚接触递归的时候,国内很多教材都采用求阶乘和菲波那契数列来描述该思想,就如同深受大家敬爱的国产的C语言程序设计,老谭也用 ...
分类:
编程语言 时间:
2016-12-04 20:40:51
阅读次数:
348
2016.12.4, 366 http://www.lintcode.com/en/problem/fibonacci/ 一刷使用递归算法,超时。二刷使用九章算术的算法,就是滚动指针的思路,以前写python的时候也玩过,但是给忘了,这次又用c++拾起来了。lint有bug,不能用,很烦。 clas ...
分类:
其他好文 时间:
2016-12-04 07:38:08
阅读次数:
246
递归函数即直接或间接地调用自身以进行循环的函数
defmySum(L):
ifnotL:
return0
else:
returnL[0]+mySum(L[1:])
printmySum([1,2,3,4,5])这个函数用递归的方法计算列表所有元素的和在每一层,函数都递归的调用自己来计算列表剩余的值的和。还有一个递归方法计算阶乘:deffact..
分类:
编程语言 时间:
2016-12-04 01:08:03
阅读次数:
304
给出一棵二叉树,返回其中序遍历 样例 给出二叉树 {1,#,2,3}, 1 \ 2 / 3 返回 [1,3,2]. 挑战 你能使用非递归算法来实现么? 分析:同前序遍历。 /** * Definition of TreeNode: * class TreeNode { * public: * int ...
分类:
其他好文 时间:
2016-11-29 22:19:26
阅读次数:
197
详见:http://blog.yemou.net/article/query/info/tytfjhfascvhzxcyt355 假设下标从0开始,0,1,2 .. m-1共m个人,从1开始报数,报到k则此人从环出退出,问最后剩下的一个人的编号是多少? 现在假设m=10 0 1 2 3 4 5 6 ...
分类:
编程语言 时间:
2016-11-22 12:55:28
阅读次数:
287
static void Main(string[] args) { Console.WriteLine(foo(30)); Console.ReadKey(); } public static int foo(int i) { if (i <= 0) { return 0; } else if (i ...
分类:
编程语言 时间:
2016-11-21 19:49:42
阅读次数:
181
所谓递归——函数的递归调用。c语言的这种特性给程序设计带来许多方便。尤其是接触数据结构时,会发现递归的出现频率非常之高,也行之有效~下面是笔者在接触递归这个东西时的一些个人总结和体会: 1.直接或间接地调用函数本身。我们在程序设计时,往往要自己写一些函数来帮助整个解决方案的完成,有时一个函数中又要调 ...
分类:
编程语言 时间:
2016-11-17 23:27:26
阅读次数:
165