【我和Python算法的初相遇】——体验递归的可视化篇_递归算法可视化

学好 Python 不论是就业还是做副业赚钱都不错,但要学会 Python 还是要有一个学习规划。最后大家分享一份全套的 Python 学习资料,给那些想学习 Python 的小伙伴们一点帮助!

一、Python所有方向的学习路线

Python所有方向路线就是把Python常用的技术点做整理,形成各个领域的知识点汇总,它的用处就在于,你可以按照上面的知识点去找对应的学习资源,保证自己学得较为全面。

二、学习软件

工欲善其事必先利其器。学习Python常用的开发软件都在这里了,给大家节省了很多时间。

三、全套PDF电子书

书籍的好处就在于权威和体系健全,刚开始学习的时候你可以只看视频或者听某个人讲课,但等你学完之后,你觉得你掌握了,这时候建议还是得去看一下书籍,看权威技术书籍也是每个程序员必经之路。

四、入门学习视频

我们在看视频学习的时候,不能光动眼动脑不动手,比较科学的学习方法是在理解之后运用它们,这时候练手项目就很适合了。

五、实战案例

光学理论是没用的,要学会跟着一起敲,要动手实操,才能将自己的所学运用到实际当中去,这时候可以搞点实战案例来学习。

六、面试资料

我们学习Python必然是为了找到高薪的工作,下面这些面试题是来自阿里、腾讯、字节等一线互联网大厂最新的面试资料,并且有阿里大佬给出了权威的解答,刷完这一套面试资料相信大家都能找到满意的工作。

网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。

需要这份系统化学习资料的朋友,可以戳这里获取

一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!


利用递归解决列表求和问题

程序很简单,但****假如没有循环语句 ?既不能用for,也不能用while还能对不确定长度的列表求和么?

 


递归三定律

1.结束条件

2.向基态前进

3.自己调用自己


递归应用-整数转换为任意进制数

我们用最熟悉的十进制分析下这个问题

十进制有十个不同符号: convString =0123456789"
比十小的整数,转换成十进制,直接查表就可以了: convString[n]

比十大的整数,想办法把比十大的整数拆成一系列比十小的整数,逐个查表
比如七百六十九,拆成七、六、九,查表得到769就可以了

所以,在递归三定律里,我们找到了“,就是小于十的整数本结束条件”

拆解整数的过程就是向“基本结束条件”演进的过程
我们用整数除,和求余数两个计算来将整数一步步拆开除以****“进制基base(// base)对“进制基”求余数 (% base)

#n为转换的数字   base为进制数
def tostring(n,base):
    coverstring = "0123456789"
    if n < base :
        return coverstring[n]
    else:
        return tostring(n // base , base) + coverstring[n % base]
print(tostring(1999,10))


递归可视化


画一个正方形

import turtle
t = turtle.Turtle()
#通过四次向右转90度画一个边长为100的正方形
for i in range(4):
    t.forward(100)
    t.right(90)
turtle.done()

画一个五角星

#画五角星
import turtle
t = turtle.Turtle()
t.pencolor("red")
t.pensize(3)
for i in range(5):
    t.forward(100)
    t.right(144)
t.hideturtle()

turtle.done()


画一个九边形

#画九边形
import turtle
t = turtle.Turtle()
t.pencolor("blue")
t.pensize(10)
for i in range(9):
    t.forward(100)
    t.left(320)
t.hideturtle()
turtle.done()


画圆形

#画圆形
import turtle
t = turtle.Turtle()
t.pencolor("blue")
t.pensize(10)
for i in range(1):
    t.circle(180)
t.hideturtle()
turtle.done()


画一个等腰三角形

#画等腰三角形
import turtle
t = turtle.Turtle()
t.pencolor("blue")
t.pensize(10)
for i in range(4):
    t.forward(100)
    t.left(120)
t.hideturtle()
turtle.done()


利用递归画一个螺旋

#内置库,用于画图的模块
import turtle
#实例化turtle对象
my_turtle = turtle.Turtle()
#调用窗口
my_win = turtle.Screen()

def draw_spiral(my_turtle,line_len):
    if line_len > 0:
        # 向当前方向走line_len 个像素
        my_turtle.forward(line_len)
        #箭头向右转90度
        my_turtle.left(90)
        #调用自己
        draw_spiral(my_turtle,line_len - 5)
        #♥这个图告诉我们递归不一定要有返回值
draw_spiral(my_turtle,300)
my_win.exitonclick()


利用递归画一颗分形树

def tree(branch_len, t):
    if branch_len > 5:
        t.forward(branch_len)
        t.right(20)
        tree(branch_len-15, t)
        t.left(40)
        tree(branch_len-15, t)
        t.right(20)
        t.backward(branch_len)

import turtle
t = turtle.Turtle()
my_win = turtle.Screen()
t.left(90)
t.up()
t.backward(200)
t.down()
t.color("black")
tree(110,t)
my_win.exitonclick()


利用递归画一个谢尔平斯基三角形

文末有福利领取哦~

👉一、Python所有方向的学习路线

Python所有方向的技术点做的整理,形成各个领域的知识点汇总,它的用处就在于,你可以按照上面的知识点去找对应的学习资源,保证自己学得较为全面。img

👉二、Python必备开发工具

img
👉三、Python视频合集

观看零基础学习视频,看视频学习是最快捷也是最有效果的方式,跟着视频中老师的思路,从基础到深入,还是很容易入门的。
img

👉 四、实战案例

光学理论是没用的,要学会跟着一起敲,要动手实操,才能将自己的所学运用到实际当中去,这时候可以搞点实战案例来学习。(文末领读者福利)
img

👉五、Python练习题

检查学习结果。
img

👉六、面试资料

我们学习Python必然是为了找到高薪的工作,下面这些面试题是来自阿里、腾讯、字节等一线互联网大厂最新的面试资料,并且有阿里大佬给出了权威的解答,刷完这一套面试资料相信大家都能找到满意的工作。
img

img

👉因篇幅有限,仅展示部分资料,这份完整版的Python全套学习资料已经上传

网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。

需要这份系统化学习资料的朋友,可以戳这里获取

一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!

在中,可以使用各种排序算法对数据进行排序,并通过可视化来展示排序的过程。以下是三种常见的排序算法可视化实现方法: 1. 选择排序:选择排序是一种简单直观的排序算法。它的工作原理是从未排序序列中找到最小元素,并将其放置到已排序序列的末尾。可以通过绘制柱状图来展示选择排序的过程,其中每个柱子代表一个元素,柱子的高度表示该元素的值。在每一轮选择中,最小的元素会被放置在已排序序列的末尾。可以通过不断更新柱子的颜色来表示已排序的部分。 2. 归并排序:归并排序利用分治法的思想,先递归地分解数组,然后再合并数组。可以通过绘制折线图来展示归并排序的过程,其中每个点代表一个元素,点的纵坐标表示该元素的值。在每一次合并的过程中,比较两个有序数组的元素,并将较小的元素放置在结果数组中。可以通过连接点和画线来表示合并的过程。 3. 冒泡排序:冒泡排序的原理是通过重复地比较相邻的元素,如果前者比后者大,则交换它们。可以通过绘制柱状图来展示冒泡排序的过程,其中每个柱子代表一个元素,柱子的高度表示该元素的值。在每一轮比较中,较大的元素会像气泡一样浮到数组的顶部。可以通过不断更新柱子的颜色来表示已排序的部分。 这些排序算法可视化实现可以帮助我们更好地理解它们的原理和过程。可以使用Python可视化库(如matplotlib)来实现排序算法可视化。通过绘制不同的图形来展示排序的过程,可以使我们更直观地观察到元素的比较和交换。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *2* *3* [python排序算法可视化](https://blog.csdn.net/weixin_42788078/article/details/88607161)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 100%"] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值