递归的主要思想
我拿到一个规模较大的问题,没办法一下子解决它,我想办法把这个问题转化成规模刚好比原来小1个单位的问题再重复这个过程,直到达到基线条件,也就是我能够直接解决的问题为止
概念和重要笔记
- 当表中有大量记录时,有两种搜索方法,第一种是全表提取出来一一比对,这会消耗大量资源
- 第二种方式是根据内容建立索引,这样可以快速查找到所需要的内容
- 回文结构:回文:
把相同的词汇或句子 ,在下文中调换位置或颠倒过来,产生首尾回环的情趣,叫做回文,也叫回环 。 - 大O符号(Big O notation)在数学中,它一般用来刻画被截断的无穷级数尤其是渐近级数的剩余项;在计算机科学中,它在分析算法复杂性的方面非常有用。很好理解数学中就是尾项
- 近似算法:
本文对几种近似算法做了较为祥细的介绍,主要有顶点覆盖问题的近似算法旅行售货员问题近似算法一般的旅行售货员问题集合覆盖问题的近似算法子集和问题的近似算法
一般来说近似问题都挺难的,比如图论中刚刚接触到的最小点覆盖问题 - 在C语言等高级语言中,为每一个变量赋初值被视为良好的编程习惯,有助于减少出现Bugs的可能性。因此,是否对不必要的变量初始化依情况而定。这就说明了初始化是一种良好的编程习惯
一些有意思的例子
- 计算n的阶乘n!
要做这个问题我们要获得基线条件,那就是当n=1
返回阶乘的值就是1
当n>1时,返回n*(n-1)!的值,以此获得递归循环
- 背包问题:
背包问题(Knapsack problem)是一种组合优化的NP完全问题。问题可以描述为:给定一组物品,每种物品都有自己的重量和价格,在限定的总重量内,我们如何选择,才能使得物品的总价格最高。问题的名称来源于如何选择最合适的物品放置于给定背包中。相似问题经常出现在商业、组合数学,计算复杂性理论、密码学和应用数学等领域中。也可以将背包问题描述为决定性问题,即在总重量不超过W的前提下,总价值是否能达到V?它是在1978年由Merkel和Hellman提出的。