美文网首页
算法学习:递归

算法学习:递归

作者: 我是月月老师 | 来源:发表于2018-12-27 12:53 被阅读0次

2018年即将结束,暂新的一年扑胸而来。作为一个程序员,工作中的编程都是和业务相关,很少涉及到算法。找工作面试的时候,算法编程是绕不过去的门槛。有一句话形容面试关节:“面试时考技术总监的难度,干活时拧螺丝钉的难度。”算法能力还是要有的,万一失业了,需要重新找工作呢?万一要指导娃参加信息学奥赛呢?

上班的路上,和老公说了我的学习算法想法,老公有兴趣和我一起学习,并且承诺每天晚上拿出半个小时的时间和我一起学习编程算法。

老公在公司里面业务能力强,但是对于算法掌握不牢固,他一向认为知道算法的思想就可以了,遇到具体问题,再去查资料。有这种想法的人很多,学生时代的表现就是不愿意背数学公式,考试时现场推公式。这种人的思维逻辑和智商是牛逼的,可是考试时间有限,他们拿不到班级或年级最高分,还总觉得比他们分数高的人智商不如他们。他们部门一个业务水平不如他的家伙去了马爸爸的公司做资深技术专家的岗位,推荐他过去面试,结果第一轮技术面试就被淘汰了,真是丢人。他就死在基础的算法题目上。

苹果公司的IOS之父去谷歌公司面试,现场没有写出解决“八皇后问题”的算法程序,被面试官拒绝。大牛在网上吐槽IT公司不合理的面试制度,引发大量程序员的共鸣。

综上所述,熟练掌握算法的重要性不言而喻。


第一天要攻克的知识点:递归算法。

典型问题:

1. 汉诺塔(hanio)问题

2. 登台阶问题

一个人登台阶,可以一次等一级台阶,也可以一次登两级台阶,那么请问登上10级台阶有多少种方法?

3. 阶乘问题

factorial(10)=?

解题思路:

1. 写出递推公式。2. 写出边界条件。3. 将1和2翻译成代码。

参考答案:

汉诺塔问题:

def hanoi(n,source,middle,dest):

    if n==1:

        print "%s--->%s"%(source,dest)

    else:

        hanoi(n-1,source,dest,middle)

        hanoi(1,source,middle,dest)

        hanoi(n-1,middle,source,dest)

print "hanoi:4 layers, source:A, dest:C"

hanoi(4,"A","B","C")

print "hanoi:4 layers, source:C, dest:A"

hanoi(4,"C","B","A")

参考文献:

公众号:算法爱好者:通过动画轻松理解递归与动态规划。

相关文章

  • 汉诺塔递归

    学习汉诺塔递归算法

  • 快速幂模板

    递归算法 非递归算法

  • 递归、迭代、回溯、广度和深度优先

    在学习算法的时候,经常碰到递归、迭代、回溯、广度优先和深度优先算法,可是回溯使用了递归,深度优先也使用了递归,广度...

  • python递归算法、尾递归算法及优化

    文章概述 递归算法和尾递归概述递归算法的优化 递归算法 介绍:递归算法是计算机编程领域非常重要的一种算法,采用分而...

  • C++ 递归算法

    递归算法,尾递归算法求阶乘!

  • Java递归算法详解

    递归算法是一种直接或者间接调用自身函数或者方法的算法。Java递归算法是基于Java语言实现的递归算法。递归算法的...

  • 矩阵链乘法

    递归算法: 迭代算法: 分析 递归算法:规模为n的问题,有n个递归,每个递归又有相应矩阵个数个递归,故T(n)=T...

  • 【Python】(十一)从汉诺塔看Python中的递归问题

    递归的原则 递归算法必须具有基本情况。 递归算法必须改变其状态并向基本情况靠近。 递归算法必须以递归方式调用自身 ...

  • 一、算法

    目标 递归算法查找算法算法分析十大排序算法 递归算法 什么是递归递归,在数学与计算机科学中,是指在函数的定义中使用...

  • 欧几里得算法

    非递归算法 默认输入 m>=n 递归算法

网友评论

      本文标题:算法学习:递归

      本文链接:https://www.haomeiwen.com/subject/ohqrlqtx.html