笔记一:递归
来源:互联网 发布:人工智能的利弊800字 编辑:程序博客网 时间:2024/05/22 12:53
一开始讲了算法的空间复杂度和时间复杂度的分析,其怎么由来的,一步步的分析演变,以前看过《算法之道》,这个还有点熟悉,就是具体的例子的时间复杂度的分析不怎么
会,应多加练习,毕竟
这是很基础的东西~
然后就是递归和分治~ 今晚只够时间讲递归~
其实,都看过递归~以前刚刚开始接触的时候觉得很容易,慢慢的就很难了,就是实现代码的时候碰到了思维障碍,过不去,大二时就学过递归~很重要的基础
以前的印象是调用自身,“推卸责任”,数学公式,递归图,经典的Fibonacci数列~
以前就是看或写递归代码的时候就会遇到思维障碍,这很难说明,但就是要理解其中的一个环节时卡住了,不明白为什么~
通过今晚的课,我想,也许是我认识理解递归算法的方式错误了~应该充分的把握其本质(要拿出来用时最直接接触的本质)和“不求甚解”~
今晚,老师讲了递归的空间本质,其实就是一个栈,临界结束条件在最顶层,最底层的是n的情况,这个就像是个手榴弹一样,最顶的就是个保险环,我们要写的代码就是保险
环(临界结束条件)和炸药(递归关系,反应链)~这个记忆很重要,因为明确了要写的是什么,就不会出现思维障碍了~理解起来就顺了,要写怎么样的递归代码就一目了然了~
写递归代码,要先推出临界结束条件和递归关系式,然后再去实现代码!!!要分析递归的时间复杂度也是要先写出递归式分析!!!递归:重在“归”和化归差不多!
比如,Fibonacci数列f[n]=f[n-1]+f[n-2],分析的话,就是T(n)变为两个T(n)(T(n-1)和T(n-2)都看为T(n)),就是T(n)=2T(n)+O(1),
每个T(n)都变为2T(n),有n个,即是O(2^n)的复杂度~(其中还有一个O(n),忽略不计)~<注意!这里的两个字“变为”是很重要的思想!!!>
还有就是讲了全排列~很经典~
perm(n)=(变为)rn(perm(n-1))+rn-1(perm(n-1))......r0(perm(n-1))
递归算法,几乎都是找f(n)和f(n-1)或f(n/2)等等的关系!
我相信其实这些都很简单,我知道我所理解的方向不对,即是打开的方式不对罢了,所以才会学算法这么慢!!!加油!!!
- 笔记一:递归
- 递归(一)
- 一.递归
- 递归一
- 算法笔记之 全排列算法 一 递归求解
- 数据结构基础学习笔记一——尾递归
- 算法笔记之 全排列算法 一 递归求解
- 笔记一:n个元素的所有排列递归算法
- 递归笔记
- 递归研究(一) 递归入门
- 递归函数汇总(一)
- 递归题一
- 递归学习(一)
- 基础算法--递归(一)
- 算法一--递归
- 算法之递归(一)
- 一题php递归
- 递归思想(一)
- AJAX——XMLHttpRequest对象主要属性和事件
- jhost邀请码2014-9-10至2014-10-10
- 软件开发与编程语言概述
- nyoj73比较大小
- 单例模式的七种写法
- 笔记一:递归
- 黑马程序员——Java入门重点知识点及环境变量设置
- 使用javax.mail.ja在javaEE5中出现异常
- 10603 Fill (BFS)
- JS中的Ajax操作实例,get方式和post方式对比
- LLVM (6) 11.5 一个目标可重定向的LLVM代码生成器
- Lowest Common Multiple Plus(杭电2028)
- 就从第一个简单的JAVA出发
- 各类硬盘接口总结