算法图解——第三章递归笔记

Scratch算法教程 -- 递归 递归过程是递归算法中的关键行为,这个关键行为在解决问题中可以不断重复循环,最后递归变量达到结束条件就退出递归函数。这种递归被称为尾递归,也是最好理解的一种递归形式。由于每次只能移动一个盘子,所以在递归时,我们需要判断:当目前需要移动的盘子数=1时,即可移动并返回前一个递归。上面的求和程序中程序结束后,递归全部结束了,并没有回溯到上一个调用它的函数。(2)中间一步之上可以看成把0上n-1个盘子通过借助辅助塔(1塔)移到了2上,(3)中间一步之下可以看成把2上n-1个盘子通过借助辅助塔(0塔)移到了1上; 阅读详情

一、基本要求

编写递归函数时,必须告诉它何时停止递归。正因为如此,每个递归函数都有两部分:基线条件和递归条件。递归条件指的是函数调用自己,而基线条件则指的是函数不再调用自己,从而避免形成无限循环。

二、栈

用于存储多个函数的变量,被称为调用栈。在调用另一个函数时,当前函数暂停并处于未完成状态,该函数所有的变量的值都还在内存中。

栈有两种操作:压入和弹出。

递归函数调用的栈被称为递归调用栈

每个函数调用都有自己的x变量。在一个函数调用中不能访问另一个的变量。

PS:使用栈虽方便,但存储详尽的信息可能占用大量的内存。每个函数的调用都要占用一定的内存,如果栈很高,就意味着计算机存储了大量函数调用的信息。在这种情况下,有两种选择:1.重写代码,使用循环。2.使用尾递归。

 

Scratch课堂丨雪花曲线【递归解说】 从一个正三角形开始,把每条边分成三等份,然后以各边的中间长度为底边。分别向外作正三角形,再把“底边”线段抹掉,这样就得到一个六角形,它共有12条边。再把每条边三等份,以各中间部分的长度为底边,向外作正三角形后,抹掉底边线段。反复进行这一过程,就会得到一个“雪花”样子的曲线。它由瑞典人科赫于1904年提出,这曲线叫做科赫曲线或雪花曲线。01——效果展示(1-4级)—02——代码展示—03——知识要点... 阅读详情

相关推荐

【实战解析】如何用Scratch自制积木实现谢尔宾斯基地毯的递归绘制

本文详细解析了如何利用Scratch自制积木功能实现谢尔宾斯基地毯的递归绘制,特别适合图形化编程初学者和信息素养大赛参赛者。通过分步教程和实战技巧,帮助读者掌握递归算法的核心逻辑、参数设计及调试方法,并提供了创意扩展思路和常见问题解决方案。

weixin_29266647的博客 270

递归算法制作一些图形

用C编写的递归算法,用递归实现一些图形,如:雪花图形等

算法图解》读书笔记 第三章 递归 调用栈(函数调用时进入的调用栈)

文章目录关注我的公众号~ 一起学习1.本章内容 关注我的公众号~ 一起学习 欢迎大家扫码关注我的公众号~ 获取更多学习资源与内容 目前学习内容: 前端基础知识点学习-JS红宝书/CSS权威手册(这个就不发了哈哈哈当个兴趣) 跟着《算法图解》扎实学习数据结构与算法 从0.1开始的C++编程小练习 吴恩达深度学习课程笔记 人工智能领域研究&学习 关注我 一起在代码之路上前行 最重要的 是互相督促着一起学习鸭~ 1.本章内容 学习递归 递归是很多算法都使用的一种编程方法 是理解本书后续内容的关键

一碗菜粥的博客 781

图形化编程 scratch 递归 二叉树(带叶子).sb3

通过自制积木实现递归画出一颗树,每次画的效果都不一样。

会当凌绝顶,一把反转你__递归数组反转

一、递归的概念 当函数的定义中,其内部操作又直接或间接地出现对自身的调用,则称这样的程序嵌套定义为递归定义。 递归就是将一个大型的复杂的问题层层转化为一个与原问题相似的规模较小的问题来求解,比如我们在字典上查一个词的意思,查到后发现这个词的解释中有个字的意思不能理解,那我们会继续去查这个字的意思,直到查到我们能够理解的程度,再逐渐返回来,逐层解释,最终理解这个词的意思。递归的能力在于用有限的语句来定义对象的无限集合。用递归思想写出的程序往往十分简洁易懂。 二、scratch中的递归Scratch

weixin_56319715的博客 853

Scratch用分治法递归求解x的n次方及与迭代法比较时间复杂度

Scratch用分治法递归求解x的n次方及与迭代法比较时间复杂度

weixin_44735475的博客 2358

【读书笔记】《算法图解第三章 递归

第三章 递归 1. 伪代码: 是对手头问题的简要描述,看着像代码,但其实更接近自然语言 2. 递归 例如:有一个盒子,这个盒子里有盒子,而盒子里的盒子又有盒子。钥匙在某个盒子中。为找到钥匙,你将使用什么算法? While 创建一个要查找的盒子堆 从盒子堆去除一个盒子,在里面找。 如果找到的是盒子,就将其加入盒子对中,一边以后再查找。 如果找到钥匙,则大功告成 回到第二步。 递归...

HarrietHai的博客 244

笔记:《算法图解第三章递归、栈

1.递归 递归指的是调用自己的函数。 1.1 递归与循环: 如果使用循环,程序的性能可能更高;如果使用递归,程 序可能更容易理解。如何选择要看什么对你来说更重要。 1.2 递归函数常见难点: 由于递归函数调用自己,因此编写这样的函数时很容易出错,进而导致无限循环。编写递归函数时,必须告诉它何时停止递归。正因为如此,每个递归函数都有两个条件:基线条件(basecase)和递归条件(recursive...

余欲与鱼语渔 559

【学习】《算法图解第三章学习笔记递归的奥秘

算法图解第三章笔记探讨了递归的核心概念与应用。递归是将问题分解为更小的相同子问题,通过函数自我调用实现,包含基线条件(终止条件)和递归条件(自我调用)两个关键要素。调用栈机制管理递归过程中的函数调用,表现为后进先出的栈结构。递归的优势在于代码简洁、表达力强,但存在性能开销和栈溢出风险。与循环相比,递归更易理解而循环性能更优。阶乘计算作为经典示例展示了递归的实现方式。选择递归还是循环需权衡代码可读性与执行效率。

一个普通程序员的成长记录簿 989

[笔记]《算法图解第三章 递归

递归 使用栈很方便,因为你无需自己跟踪盒子堆——栈替你这样做了。 使用栈虽然很方便,但是也要付出代价:存储详尽的信息可能占用大量的内存。每个函数调 用都要占用一定的内存,如果栈很高,就意味着计算机存储了大量函数调用的信息。 在这种情况下,你有两种选择。 重新编写代码,转而使用循环。 使用尾递归。这是一个高级递归主题,不在本书的讨论范围内。另外,并非所有的语言都支持尾递归 小结 递...

dideng8675的博客 168

scratch画二叉树

使用scratch实现画二叉树,利于小学生学习,将logo语言与scratch联系起来。

C#递归算法画树C#递归算法画树C#递归算法画树

C#使用递归算法,生成并画树形状的图形。详细介绍请到博客中看看

算法图解第三章笔记与习题(递归

算法图解第三章笔记与习题(递归) 文章目录算法图解第三章笔记与习题(递归)3.1 递归3.2 基线条件和递归条件3.3 栈3.3.1调用栈3.3.2 递归调用栈2.4 小结练习习题3.1习题3.2 3.1 递归 def factorial(n): # 用递归计算阶乘,可读性更强,但实际性能与循环相同,甚至更差。 if n == 0 or n == 1: return...

hwl19951007的博客 883

算法图解第三章递归笔记

每个递归函数都有两部分: 基线条件和递归条件.递归条件指的是函数调用自己,而基线条件则指的是函数不再调用自己,从而避免形成无限循环. 所有函数调用都进入调用栈 ...

西祠梧桐的博客 195

算法图解》chapter3(递归笔记和习题

男朋友推荐了《算法图解》这本萌萌的书作为我的算法启蒙书,简单翻了翻,似乎对新手很友好的样子,而且使用语言也是我最近正在学习的Python。既然决定了要走技术路线,就要好好学习数据结构与算法呀~~~ Chapter1 算法简介 算法是一组完成任务的指令。 1. 二分查找: 二分查找是一种算法,其输入是一个有序的元素列表。如果要查找的元素包含在列表中,二分查找返回其位置;否则返回null。 注意:...

weixin_43757956的博客 417

算法图解第三章笔记递归(java版)

3.1 递归 案例:寻找祖母的钥匙。 钥匙在祖母的盒子里,一个大盒子中有很多小盒子,小盒子中也可能还有盒子。钥匙就在某个盒子中。如何找到钥匙? 方法一: 创建一个要查找的盒子堆 从盒子中取出一个盒子,在里面找 如果找到的是盒子,就将其加入到盒子堆中,以便以后再查找。 如果找到钥匙,则大功告成 回到第二步 方法二 检查盒子中的每样东西 如果是盒子,就回到第一步 如果是钥匙,则大功告成 第一种...

XuXing的博客 333

Scratch深潜:解锁递归与分治算法的编程之门

Scratch不仅仅是一个儿童编程工具,它同样能够成为学习和实现高级编程概念的平台。通过本文的探讨和示例代码,我们可以看到,即使是递归和分治这样的复杂逻辑,也能够在Scratch中找到其实现的途径。本文详细介绍了在Scratch中实现递归和分治算法的方法,并通过具体的代码示例展示了Scratch在教育和编程上的深度与广度。随着孩子们编程技能的增长,Scratch可以成为他们探索更高级编程世界的坚实基石。

2401_85761762的博客 979

Scratch编程实现DFS递归调用出错分析

Scratch编程如何解题呢?要遍历1到n之间的所有自然数,一种方法时用到DFS算法。先介绍什么是DFS算法。图1,DFS深度搜素算法图例DFS算法是深度搜索算法,可以理解为一种节点连接图的遍历算法。如图1,开始时没有节点,第一层可以选择的节点有①、②、③,假定选定①;之后第二层的选择可以是②或者③,假定选择②;之后第三层的选择只能是③。

wanttobefish的博客 1063
上一篇: 算法图解——第二章选择排序笔记
下一篇: SI100b期末复习
fromscratchx
博客等级 码龄6年 1粉丝 8原创
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值