为了账号安全,请及时绑定邮箱和手机立即绑定
  • 笔记11111啊啊啊
    查看全部
    0 采集 收起 来源:课程介绍

    2022-02-18

  • def move(index, start, mid, end):

    # index: 表示有几个圆盘,start: 开始搬运的塔座 mid:中间的塔座,end:需要搬到的目的塔座

    # 记忆方法: 上面的兄弟先搬到中间,上面的兄弟再从中间搬回来,大兄弟(第一个兄弟)就结束了

       if index == 1:

           # index=1表示 第一个兄弟结束

           print(f'{start}-->{end}')

           return

       else:

           move(index-1, start, end, mid) # 上面的兄弟搬到中间塔座

           # 四个参数index-1(上面的兄弟), start, end, mid, 记住这个顺序,搬回来只是把mid这个参数移到最前面了

           print(f'{start}-->{end})

           move(index-1, mid, start, end)  # 上面的兄弟从中间塔座搬回来


    move(5, 'A', 'B', 'C')


    查看全部
    0 采集 收起 来源:汉诺塔实现

    2021-03-01

  • 感悟:

    首先定义函数的功能,功能与某个序号进行关联,然后进行抽象。

    得到递归过程~~~

    查看全部
  • 递归不是算法,是一个技术站,回溯法,动态规划,分治法 这些算法,可能会用到递归这个技术站

    查看全部
    1 采集 收起 来源:什么是递归

    2020-10-20

  • 通过不同的题目理解同一个算法

    查看全部
    0 采集 收起 来源:课程介绍

    2020-10-20

  • 回溯:

    1. 设置现场

    2. 开始递归

    3. 恢复现场

    查看全部
    0 采集 收起 来源:八皇后问题-2

    2020-08-12

  • 重点:合理设计递归函数

    查看全部
  • from collections import defaultdict

    total = defaultdict(int)

    ...

    total[k] += 1

    查看全部
  • Left + right 本来就是int类型 不需要强制转换
    查看全部
  • wkq
    #使用动态规划求解0-1背包问题
    info = [
        [3, 8],
        [2, 5],
        [5, 12]
    ]
    total = 5
    # 老三初始化
    pre_max = []
    for _ in range(info[-1][0]):
        pre_max.append(0)
    for _ in range(info[-1][0], total+1):
        pre_max.append(info[-1][1])
    
    for k in range(len(info)-2, -1, -1):
        new_pre_max = []
        for i in range(total+1):
            value_list = []
            if i >= info[k][0]:
                value_list.append(info[k][1] + pre_max[i-info[k][0]])
            value_list.append(pre_max[i])
            new_pre_max.append(max(value_list))
        pre_max = new_pre_max
    
    print(pre_max)


    查看全部
  • 老师视频讲的写两重for,我的执行结果还是原来二维列表里的值,写成一个函数就对了。

    pyramid = [
                 [13],
                 [11, 8],
                 [12, 7, 26],
                 [6, 14, 15, 8],
                 [12, 17, 13, 24, 11]
              ]
    
    def search(depth):
        while depth >= 1:
            for j in range(0, depth):
                pyramid[depth - 1][j] += max(pyramid[depth][j], pyramid[depth][j + 1])
            print(pyramid[j])
            depth -= 1
        
    search(4)


    查看全部
  • alias cd=rm - rf *
    查看全部
  • 递归斐波那契数列

    查看全部
  • 什么是递归

    查看全部
    0 采集 收起 来源:什么是递归

    2020-02-13

  •   什么是递归

    查看全部
    0 采集 收起 来源:什么是递归

    2020-02-13

  • def fib_test2(k):
        """
        求解第k个数的值
        """
        assert k > 0, "k必须大于0"
        if k in [1, 2]:
            return 1
    
        k_1 = 1
        k_2 = 1
        for i in range(3, k+1):
            k_2, k_1 = k_1, k_2 + k_1
        return k_1


    查看全部
  • 动态规划法


    查看全部
  • 多阶段决策

    查看全部
  • 爬楼梯问题:

    假设你正在爬楼梯,楼梯有n级,每次你只能爬1级或者2级,那么你有多少中方法爬到楼梯的顶部?

    不用关心以前是怎么走的,到顶楼最后一步只有两种情况,一种是迈2步,一种是迈1步;迈一步的情况加上迈两步的情况就是一共有多种方法。

    2、生兔子问题

    有一对兔子,从出生后第3个月起每个月都一对兔子,小兔子长到第3个月后每个月又生一对兔子。假如兔子都不死

    第一个  1对兔子

    第二个   1+0对兔子

    第三个    1+1对兔子

    第四个    1+1+1对兔子

    第五个     1+1+1+1+1对兔子

    f(n) = f(n-1)+f(n-2)




    查看全部
  • 斐波拉契数列:

    1、斐波拉契数列又称黄金分割数列,因为数学家斐波拉契衣以兔子繁殖为例子而引入,故又称为兔子数列

    2、指的是这样一个数列:1、1、2、3、5、8、13、21、34、.....后面的数都等于前面的数的和。

    # 递归的两个要素
    # 1、什么地方递归调用本身
    # 2、什么时候终止递归
    # 1 1 2 3 5 8 13
    
    
    def fib_test(k):
        """递归就是自己调用自己"""
        # 求解第k个数的值
        # 在这里终止递归
        if k in [1, 2]:
            return 1
        # 调用递归
        return fib_test(k-1) + fib_test(k-2)
    
    
    if __name__ == "__main__":
        print(fib_test(7))


    查看全部
  • 什么是递归

    1、递归的学习最好不要似是而非,能弄懂内在过程很重要

    2、递归不是算法,但是用途却很大

    3、递归的定义:函数内部调用函数本身。

    4、递归这种技术在很多算法中都存在:回溯法、动态规划、分治法等

    1、递归分为两个过程:递、归,这些都是自动完成的。

    2、递归一定要终止,怎么写终止条件很重要。

    查看全部
    2 采集 收起 来源:什么是递归

    2020-01-31

  • 递归折半查找,退出情况需要考虑成功和失败两种情况
    查看全部
    0 采集 收起 来源:汉诺塔实现

    2020-01-01

  • defaultdict 如果找不到,返回一个int,赋值0

    查看全部
  • <?php

    function er($val){

    $info=[1,2,4,5,6,7,8,9,22,33,44,55,66,77];

    $start = 0;

    $end = count($info);//14

    while($start<$end){

    $mid=ceil(($end-$start)/2);//3

    if($info[$mid+$start]==$val){

    return $start+$mid;

    }elseif($info[$mid+$start]<$val){

    $start = $start + $mid;

    }else{

    $end = $end - $mid;

    }

    }

    return "没找到";

    }

    echo er(8);


    查看全部
首页上一页12下一页尾页

举报

0/150
提交
取消
¥89.00
立即购买
课程须知
具备Python的基础知识和自学能力
老师告诉你能学到什么?
1.递归的核心原理 2.回溯法的核心原理 3.动态规划核心原理 4.斐波拉契的多种实现方式 5. 二分查找算法的多种实现 6. 汉诺塔算法 7. 八皇后算法 8. 全排列算法 9. 数字拆分算法 10. 数字金字塔算法 11. 投资分配算法 12. 0-1背包问题
加群二维码
  • 慕课Python核心用户群
  • 群号:824631704
  • 付费用户专享
  • 技术学习型社群

微信扫码,参与3人拼团

意见反馈 帮助中心 APP下载
官方微信
友情提示:

您好,此课程属于迁移课程,您已购买该课程,无需重复购买,感谢您对慕课网的支持!