迭代和递归的具体区别

迭代:如果我们初学的是C语言或Python之类的非函数式编程语言,一般用到的while for 语句就是迭代既是普通概念上的循环。

递归:既函数不断调用自身直到函数的条件不满足自身调用然后往回计算:

例:a=10

def recursion( a ):

if a == 1:                                                                                                                                                         return  a                                                                                                                                             else:                                                                                                                                                              return a * recursion(a-1)

上面的例子中recursion函数在参数a大于1时 recursion不断调用自身a * recursion(a-1)直到a等于1停止调用自身并往回计算返回计算结果

函数方式编程的迭代:尾递归

上面的函数可改写成:

def recursion(x, running_total=1):

if a == 1:

return running_totla

else:

return recursion(x-1, running_total*x)

这样就形成了函数式编程的迭代,即尾递归。在函数式编程时优先用暂用内存小的尾递归。

还不了解的话,可以去看看《计算机程序的构造和解释》这本书。

 

python web框架Flask学习心得

最近学python web的flask框架,也是我第一次接触的比较大的程序。有幸买了《flask web开发基于python的web应用开发实践》这本书。薄如蝉翼的200页,比起《python核心编程》的600多页显得小的多。

      这本的算是对flask讲的非常不错的一本说从新建个路由到完整的blog逐一讲解到并且有作者github的辅助。让我这个新手对于web后台开发有个整体的思路。
web flask 重要模块 :
1路由:通俗易懂的话来说就是一个页面的逻辑与内容
定义路由 
@app.route(‘/’)
def index:
return ”

hello word

@app.route(‘/’)这里的(‘/’)表示程序第一个启动的路由
启动路由可以通过redirect(url_for(xxx))的方式让程序执行到别的路由
2模板:即定义网页页面布局
模板在路由中启用
  @app.route(‘/’)
def index:
return render_template(‘xxxx.html’)。     
render_template就是启用模板语句
模板中也可定义跳转路由
3表格:即填写的表单如登入的表单和注册表单
路由中通过  
@app.route(‘/’)
def index:
form = xxxxxx() 来实例化表单
4数据库:储存数据用的库
flask web后台程序基本运行路线:
1.程序→{路由(‘/’)[模板,表格,数据库]}→重定向(url_for)→{路由(‘new’)[模板,表格,数据库]}
2.程序→{路由(‘/’)[模板,表格,数据库]}→模板→{路由(‘new’)[模板,表格,数据库]}

 

我的编程学习之路(推荐书单)16/5/5更新

说说我自学编程的事吧,大概是从2014年10月开始折腾。个人是个知乎严重患者,学编程是被知乎带下的坑,自然学的语言也要符合知乎的逼格。就python吧谁叫人生苦短呢!怎么开始呢

网上找资料,对于没有任何编程基础+没有什么英语基础,完全理解不能!!!

有事怎么不问问神奇的知乎呢

我找到了《与孩子一起学编程》入门神书,书名虽说是 与孩子 ,但没有编程经验就是孩子。现在还出了新版加了字典更加完善。这本书我折腾了一个月虽说后面的pygame没有完成但python让我对程序的概念和python的基础语法有了初步的了解s4518521

接着为了进一步巩固python基础语法的认识我找了这本书《笨办法学python》也是比较基础的一本   好书,有编程基础的同学可以直接从这本学习python ,无基础的同学不读上面的那本直接买这本是会很吃力的。当然不排除天赋异禀s27836847这本我也看了一个月

看完上面俩本我对于python的基础语法有了一些认识接着我找了两本大部头《python核心编程》《python基础教程》s3140466s4387251《python基础教程》烂书中战斗机评价满分五星给他1.5星不能再多。超烂的字体会让你有时错觉自己是在看英文,超烂的翻译会让你有时错觉自己不会中文。内容对于新手太难,对于老手太菜。还有一些根本看不懂。《python核心编程》600多页和高达70元的价格,字典书。里面对python的语法库讲的很全面,但别把他当成该看完的书读。这本书应该当作字典而不是当作读过的书。

期间可以读读程序人文书增加编程兴趣s4669554听说好多程序员看了这本书都去创业了

学习了基础的语法和第三方库,应该学习实用项目学习python web后台框架Flasks27906700薄薄的200页,别小看这200页初次接触web和学习时间一般不下3个月。

有了初步的构建网站后台能力,现在我们要学一些编程的“内功”,有了内功你就可以和别人约架时自信的说“看我jj比你大”6609c93d70cf3bc741a61a53d100baa1cc112aef《计算机程序的构造和解释》用萧大的话说“这是软件工程的精华所在”我看了头俩章,它让我深刻的理解了递归接触了函数式编程语言scheme,还有个我自以为对我引起的作用 让我更想去学习底层的东西,对于web、爬虫、app我完全提不起兴趣,所以我才会想去搞编译器

接下来要学学硬件方面的知识b8014a90f603738d2559416cb11bb051f819ec69这本是非常通俗的讲了计算机的底层知识,虽然我现在暂时还没看完

来来看了《计算机程序的构造和解释》之后我们得学学C语言《C编程语言》s26387712,这本书非常适合看了《计算机程序构造和解释》后查看,里面会讲一些基本的算法。

现在想搞底层了,就学习编译原理吧《编译器设计》8601a18b87d6277f12208f472a381f30e924fc9b

16/5/5
学习编译原理光上面一本《编译器设计》显然不够,我们还得辅助一本对大环境的介绍的《程序设计语言–实践之路》

实践之路这本书辅助上面一本编译器设计看会让你啃编译器知识更加容易,当然我后面还要看龙虎鲸三部头,但经典得先把编译原理摸出个大概后再进行啃咬,不然会严重怀疑自己智商。有了上面俩本的理论方面知识的辅助现在我们需要实践练一练

自制编程语言

这本自制编程语言里实现了两门语言第一门是个解释器,第二门加了个虚拟机。虽然作者代码略蛋疼,但是俩门按照R大所说一门是类js一门类java的语言。怎么样是不是有点小激动,闲暇之余我们可以看看

计算机系统

《计算机系统要素》这本书从头到尾介绍了如何自己实现一台计算机读者能够获得关于硬件体系结构、操作系统、编程语言、编译器、数据结构、算法以及软件工程的详实知识,这本书我还在啃前五章介绍了简单的汇编语言及机器语言,也补充了再硬件方面的欠缺,待续么么大。

未完