6 递归

作者: 阿健在长安 | 来源:发表于2017-04-20 12:09 被阅读8次

普通程序员用迭代,牛逼程序员用递归。# 1. 什么是递归有进有出才叫递归,一定要记得返回!返回!
求x的阶乘:

def fun(x):
 if x == 1:
 return 1
 else:
 return x * fun(x - 1)

2. 斐波那契数列的递归实现

Paste_Image.png

1. 迭代方法:

def fun(n):
    n1 = 1
    n2 = 1
    n3 = 1

    if n < 1:
        return -1

    while n > 2:
        n3 = n1 + n2
        n1 = n2
        n2 = n3
        n -= 1

    return n3

2. 递归方法:

def fun(n):
 if n < 1:
 return -1
 elif n ==1 or n ==2:
 return 1
 else:
 return fun(n - 1) + fun(n - 2)

3. 比较

在本题中,递归写起来固然简单,但是以牺牲效率为代价。当输入为35时,递归的运行时间就会很长,而迭代法立刻就能出来结果。

3.汉诺塔

def fun(n,x,y,z):
    if n == 1:
        print(x,'-->',z)
    else:
        fun(n-1,x,z,y)      #把n-1个从x移到y
        print(x,'-->',z)      #把最下面一个从x移到z
        fun(n-1,y,x,z)      #把n-1个从y移到z

num = int(input('input the number:'))
fun(num,'X','Y','Z')

相关文章

  • 递归

    本文主要内容有: 1、递归的样子2、递归简介3、递归特点4、递归分析方法5、递归程序模板6、递归程序调试7、总结8...

  • python数据结构教程 Day6

    python数据结构教程 Day6 本节重点 递归定义 递归调用的实现 简单递归的应用 一、递归 在python基...

  • 6 递归

    普通程序员用迭代,牛逼程序员用递归。# 1. 什么是递归有进有出才叫递归,一定要记得返回!返回!求x的阶乘: 2....

  • 斐波那契数列与Python的尾递归蹦床 连载【3】

    ……续上回斐波那契数列与Python的尾递归蹦床连载【2】 6. 递归引用名的“不变”化 递归函数就是在函数中还要...

  • 合并两个排序的链表

    给定两个递增的链表,合并成一个递增链表如给1 3 5和2 4 6,合并后该为1 2 3 4 5 6 非递归方法 递归方法

  • js 扁平多维数组

    1 递归写法 2 es6 语法 3 最简单的办法

  • 二叉树翻转

    采用递归方法 1.确定传入参数 2.确定返回值 3.确定单层递归逻辑 class Solution6 { pub...

  • 6.递归(Recursion)

    递归三部曲 1.define subproblem:定义子问题2.find recursion rule: 找出递...

  • 二叉树遍历

    先序遍历——[递归、非递归] 中序遍历——[递归、非递归] 后序遍历——[递归、非递归] 层次遍历——[递归、非递归]

  • array的扁平化

    1.es6的flat 2.利用数组reduce递归拼接concat判断

网友评论

      本文标题:6 递归

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