版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
青岛版(新教材)初中信息科技第四册2025-2026学年经典算法之旅-枚举与递归生活中的算法(一):密码锁的烦恼😱突发状况!你的行李箱密码锁意外打不开了,只记得密码是一个神秘的3位数(000-999)。既没有密码提示,也找不到说明书,现在的你被困在原地,第一反应会怎么做来解开这个锁呢?🤔大脑飞速运转:难道只能像个“笨小孩”一样,从000开始,一个数字一个数字地去试吗?虽然这个过程听起来有点繁琐,甚至会让人觉得很“傻”,但在没有其他线索的情况下,这好像是目前唯一能确保成功的办法了……💡算法小词典枚举逐一尝试,直到成功
最朴素也最有效的策略!其实在计算机科学里,这种方法就叫枚举算法。当我们找不到更聪明的捷径时,这种看似“暴力”却极其可靠的方式,能让计算机通过遍历所有可能性,一步步找到问题的正确答案。生活中的算法(二):数学的奥秘先来算一算:什么是5的阶乘?我们通常会这样一步步计算:
5!=5×4×3×2×1=120
这是一种非常直接的计算方式,但如果数字很大,这样算是不是有点麻烦?💡灵光一闪:换个思路拆解问题能不能先算出4!,再乘以5得到5!呢?
就像搭积木一样:
5!=5×4!→4!=4×3!→...→1!=1
把大问题拆成了一模一样的小问题!✨这就是“递归”算法!核心思想就是“大事化小”:将一个复杂的大问题,拆解成结构相同但规模更小的子问题,直到小问题可以直接得出答案。这在计算机解决复杂任务时可是大有用处的智慧哦!本节课,我们将一起探索...理解枚举算法掌握枚举“一一列举、逐个验证”的核心思想,熟悉从问题出发、逐步排查的解题步骤,建立对基础算法的直观逻辑认知。学会将实际问题拆解为可枚举的范围,运用枚举法快速解决简单的查找、匹配与条件判断类问题。理解递归算法深入理解递归“大事化小、小事化了”的核心原理,牢牢掌握“递推关系”与“终止条件”两大关键要素,看懂自我调用的奥秘。针对有重复子问题的场景,学会用递归思维简化代码结构,高效解决阶乘、斐波那契数列等典型的数学与逻辑问题。学会算法选择横向对比枚举与递归的优缺点,清晰认知枚举的直观性与递归的简洁性,理解不同算法在执行效率与资源消耗上的差异。建立灵活的算法选型思维,根据问题规模、数据特征和效率要求,为不同场景挑选“最趁手”的算法工具。探索小目标:从基础概念到动手实践,我们将一起把抽象的算法逻辑变得生动有趣!通过这节课,你将学会像计算机一样思考,轻松掌握解决问题的核心算法思路。枚举算法:地毯式搜索核心定义:穷举的智慧这是一种“地毯式”的搜索策略。核心思想是在已知的有限范围内,将所有可能的候选答案毫无遗漏地全部列举出来,然后按照既定的条件逐一进行检验和验证。只要条件设置正确,最终总能从这些可能性中筛选出符合要求的正确解。生活场景:试钥匙开门想象一下你手里有一大串钥匙,却不知道哪一把能打开眼前的这扇门。最直接有效的办法就是:从第一把开始,一把一把地往锁孔里插,直到听见“咔哒”一声锁开了为止。这个过程不需要复杂的推理,只需要耐心地逐一尝试,这就是枚举算法最通俗的体现。💡算法心法:“笨办法”往往最可靠虽然枚举法看起来像是一种“笨办法”,但在数据规模有限的情况下,它是最直观、最容易实现的方法。计算机拥有极快的运算速度,正好可以弥补这种方法“重复劳动”的缺点,将人类从繁琐的逐一验证中解放出来。枚举的核心:逐一排查,筛选有效解逐一排查不遗漏任何一个可能性。就像面对一大串钥匙,我们需要把所有的钥匙都拿出来,而不是只挑其中几把。“把所有潜在的答案都摊在桌面上,一个都不能少!”筛选有效解根据问题的条件做“裁判”。拿到每一把钥匙后,都要去试一下锁孔,看看能不能顺利插进去并转动。“用规则当尺子,量一量哪个才是对的!”排除无效解果断放弃错误选项。如果钥匙插不进去,或者转不动,那就直接换下一把,直到找到那把完美匹配的。“不对就Pass,别在错误的路上浪费时间!”核心逻辑总结:把所有钥匙都拿出来→挨个用锁去试→排除不合适的→找到唯一能打开门的那把!这就是枚举法从“海量可能”到“唯一正确”的寻宝过程。步骤一:确定枚举范围在开始尝试之前,我们必须先明确问题所有可能的答案区间。这就像是在寻找宝藏前,先确定藏宝图的有效范围,是枚举法能够高效、正确执行的核心前提。范围必须是“有限”的如果答案有无穷多种可能,计算机永远也试不完。我们需要将问题限制在一个可计算的数量级内,就像在沙滩上找特定的贝壳,而不是在大海里捞针。边界必须“精准”无漏既要确保不遗漏任何一个潜在的正确答案,也要剔除不必要的重复和无效数据。精准的范围能减少计算机的工作量,让我们用最快的速度找到正确解。经典示例:密码锁一个三位数的密码锁,其可能的答案范围被严格限定在000到999之间。这是一个完美的有限且精准的范围,总共只有1000种可能性,既不会因为太多而无法计算,也不会因为太少而漏掉正确密码。步骤二:逐一列举验证核心心法:全面+有序就像小侦探破案一样,我们要对范围内所有的可能性进行“地毯式”排查。不可以跳着找,也不能漏掉任何一个,必须严格按照顺序执行,保证每一个线索(可能性)都被检查到,只有这样才能确保答案不会悄悄溜走哦!举个栗子:解锁数字密码如果密码是一个三位数,范围是000到999。我们就从000开始,接着是001、002、003……像数数一样,一直按顺序尝试到999。不管数字有多少,只要坚持这个节奏,就一定能找到那个唯一正确的组合!💡为什么要这么做?
这个方法虽然看起来有点“机械”,但却是最稳妥的笨办法!当我们面对复杂的问题,暂时找不到更巧妙的捷径时,把大问题拆解成一个个简单的重复小步骤,有序地穷举能帮我们避开混乱,稳稳当当地接近正确答案。步骤三:筛选有效结果根据问题给出的具体条件,从所有可能性中精准筛选出符合要求的解,这是我们找到正确答案的关键一步!核心要求:明确标准判断条件一定要清晰,得出的结果必须准确。不能模棱两可,否则就会在错误的选项里兜圈子。只有设定好清晰的“通关规则”,我们才能在复杂的线索中,快速定位到那个唯一正确的目标。趣味示例:打开宝箱想象你正在解锁一个神秘宝箱,手里有好多把钥匙。判断条件很简单:“这把钥匙能不能顺利插进锁孔并打开箱子?”。如果能打开,这把钥匙就是有效解;如果转不动或者插不进,就果断换下一把!筛选就像寻宝游戏里的“验货环节”!不看表象看实效,不凭感觉凭规则。当你找到那个完全符合所有条件的结果时,就像拿到了通关钥匙,之前所有的尝试和计算都有了完美的答案,问题也就迎刃而解啦~案例分析:鸡兔同笼经典数学谜题挑战笼子里一共住着一群小鸡和小兔子,数了数发现总共有35个头,但脚下却有94只脚。因为小兔子总是爱把耳朵藏起来,直接数不清数量,你能帮我们算一算笼子里鸡和兔各有几只吗?看着这可爱的画面,是不是觉得问题也变得有趣起来了?其实不用一只只数,用一个简单的方法就能快速找到答案!枚举法
小妙招简单直接
快速试错核心逻辑:化繁为简,逐一验证我们不需要复杂的方程,只需要从“鸡的数量”入手枚举。假设鸡有0只、1只、2只……一直到35只,对应的兔子数量就是总头数减去鸡的数量。再根据“鸡2只脚,兔4只脚”的常识,计算出每种假设下的总脚数,只要总脚数等于94,就能立刻锁定正确答案啦!用枚举法解决鸡兔同笼确定枚举范围笼子里一共关了35个头,所以鸡的数量可能是0到35只之间的任意整数。我们需要逐个尝试这个范围内的每一个数字,去验证是否符合脚数的条件。核心判断逻辑对于每一个假设的鸡数量,先算出兔子数(兔子=35-鸡),再计算总脚数(总脚数=鸡×2+兔×4)。如果计算出的总脚数恰好等于94,那这组数量就是正确答案!假设:鸡有10只兔子就有25只,总脚数是10×2+25×4=120只。
结果:120≠94,不符合条件。假设:鸡有20只兔子就有15只,总脚数是20×2+15×4=100只。
结果:100≠94,还差一点点!不断尝试不同的数字,直到我们找到那个让总脚数等于94的组合,这就是枚举法的核心思想——“逐一排查,命中目标”。找到正确答案啦!鸡23只+兔12只计算验证:23×2+12×4=94
完美符合题目中的总脚数条件!鸡兔同笼问题的算法流程启动:设定初始值程序开始运行,首先把小鸡的数量设为0。
已知笼子里总头数是35,这是我们解题的基础条件哦!循环:逐个排查让小鸡数量从0一直试到35。
就像我们一个个去数一样,把所有可能的情况都检查一遍,绝不放过任何一种可能性!推导:算兔子数量因为总头数是35,所以:
兔子数量=35-小鸡数量。
只要知道小鸡有几只,兔子的数量马上就能算出来啦。关键:脚数对吗?检查总脚数是否等于94:
2×小鸡+4×兔子=94?
这是判断答案正确与否的核心标准哦!Bingo!找到答案如果脚数刚好对,那就太棒了!
直接输出小鸡和兔子的具体数量,然后结束程序,问题解决啦!不对,继续试如果脚数不对,说明这次猜错了。
小鸡数量加1,回到循环里,重新计算兔子数量,再检查一遍!枚举算法的优缺点逻辑简单,易于实现思路非常直白,就像我们日常生活中的“逐个排查”一样,不需要复杂的数学推导或逻辑转换。对于编程新手来说,理解这种“暴力搜索”的思想几乎没有门槛,能快速把问题转化为代码。结果准确,绝不遗漏这是枚举算法最核心的优势。只要我们设定的搜索范围覆盖了所有可能的正确答案,并且判断条件无误,无论问题多复杂,程序都一定能从海量可能性中找到那个唯一的解,不会出现算法逻辑错误导致的答案偏差。致命短板:效率较低,耗时严重枚举本质上是“笨办法”,需要对每一种可能性进行逐一验证。如果问题的解空间非常庞大(例如破解一个8位的数字密码就有1亿种可能),程序会进行海量的循环和判断,这会占用大量的计算资源,导致运行时间极长。在对响应速度有要求的场景下,这种效率问题往往是不可接受的。什么时候用枚举?解的数量较少当问题的候选答案数量不多时,我们不需要复杂的算法,通过简单的穷举就能覆盖所有可能性,计算成本极低。核心特征:候选集规模小,穷举耗时短。范围有限明确当问题的边界清晰、条件可以被具体定义时,我们能轻松划定搜索区间,像在一个圈好的范围内寻宝,不会做无用功。核心特征:搜索范围可控,无模糊地带。需要精确答案当我们需要一个准确无误的解,而非估算或近似值时,枚举法通过逐一验证每一种情况,能100%确保结果的正确性。核心特征:拒绝模糊,追求绝对准确。💡核心心法:简单直接,逐一排查,不重不漏!就像在抽屉里找钥匙,把所有抽屉都看一遍,总能找到那把对的。递归算法:神奇的自我复制什么是递归?一个函数或过程在运行过程中,会主动地自我调用。这就像是程序里的“分身术”,在执行任务时不断复刻自己,直到满足某个特定条件才会停下来。核心:大事化小面对复杂的大问题,我们把它拆解成规模更小、结构相同的子问题。就像搭积木一样,先解决小积木的问题,最后拼在一起,大问题自然就迎刃而解啦。生活:无限镜像就像两面镜子面对面对照!你会看到无数个层层嵌套、越来越小的自己。递归就是这样,问题在不断“复刻”中变得简单,直到触达那个不再需要复制的“终点”。💡递归小秘籍:找准“出口”是关键!递归虽然神奇,但如果没有终止条件,就会像镜子里的影像一样无限循环下去,导致程序崩溃。所以写递归代码时,一定要先找到问题的“递推公式”和“终止条件”,让问题在变小的过程中能找到停下来的那个“最小自己”。递归就像俄罗斯套娃想象一下,你手里有一个色彩鲜艳的俄罗斯套娃。当你打开这个大大的娃娃时,发现里面藏着一个一模一样但尺寸小一点的娃娃;再打开这个小娃娃,里面居然还有一个更小的……这个层层嵌套、不断“打开”的过程,和编程里的递归逻辑简直如出一辙!第一步:拿到大娃娃面对一个复杂的大问题,就像面对这个巨大的套娃,我们首先尝试把它“打开”,看看里面是什么。第二步:发现小娃娃每次打开都能看到一个同类型但更简单的小问题,于是我们继续对这个小娃娃执行同样的“打开”操作。第三步:不断重复这个过程不会一直持续下去,总会有一个终点,让我们知道什么时候该停下来。核心概念:终止条件(BaseCase)当打开最里面那个不能再打开的实心娃娃时,游戏就结束了。在递归算法中,这就是防止程序无限循环的“终止条件”——它是递归能够安全停止、并开始回溯结果的关键节点。要素一:递归终止条件什么是终止条件?递归函数的“停止信号”。它明确告诉程序,什么时候应该结束自我调用,就像赛跑时的终点线,到达目标就立刻停下。简单说:给递归设定一个“底线”,一旦满足这个条件,就不再自己调用自己了。必须要有!划重点这是递归的“生命线”。如果缺少它,函数就会像失控的机器人一样,无限循环调用自己,直到把电脑内存耗尽。后果很严重:程序直接崩溃(死循环)。这可是初学者最容易踩的“大坑”哦!栗子:计算阶乘阶乘规则是n!=n×(n-1)!。我们一直拆解计算,直到遇到一个不需要再算的数。当n=1时,直接返回1。这就是终止条件,告诉程序:“到1为止,不用再拆啦!”💡核心口诀:先定终点,再找规律!没有终点的递归就像没有刹车的车,迟早要“翻车”。写递归代码时,第一步一定要先想好:什么时候停下来?要素二:递归递推公式核心定义如何将原问题拆解成更小的子问题?这是递归思维的第一步,把复杂的大任务“化整为零”,让庞大的问题规模逐步缩小,变成我们更容易下手处理的小单元。关键核心找到问题的重复性规律。这是递归的灵魂所在,意味着每次拆解后的子问题,在逻辑结构上和原问题是高度相似的,只是规模不同,从而可以复用同一套解决思路。经典示例:阶乘计算n!公式:n!=n×(n-1)!
求5!时,问题转化为5×4!;求4!又转化为4×3!……直到遇到终止条件。这种层层递推的方式,让复杂的计算过程变成了简单的重复步骤,计算机就能高效地自动执行啦。💡思维小妙招递归就像拼拼图游戏!
把一整块复杂的大拼图(原问题),拆成一个简单的小拼图块(当前步骤n)和剩下的一堆拼图(子问题n-1)。
只要找到每一步的“拆分规则”,再庞大的拼图,也能像搭积木一样,一步一步轻松拼完~案例分析:n的阶乘我们要计算n的阶乘(n!),即从1开始连续乘到n的积(如5!=5×4×3×2×1)。这是一个经典的递归入门问题,我们将通过递归的核心思维——“拆解-终止-回溯”,来探索如何优雅地解决它。问题拆解把复杂的大问题拆解为同类的小问题。n!=n×(n-1)!,要求解n的阶乘,只需要先求出n-1的阶乘,再乘以n即可。核心公式:n!=n×(n-1)!终止条件递归不能无限进行,必须有停止的终点。当问题小到不能再拆时,直接给出已知答案,这是递归的“出口”。当n=1时,1!=1回溯求解从最小的已知解开始,像链条一样逐步回推。利用已经算出的小问题答案,反过来计算出大问题的最终结果。由1!推2!,直到n!💡趣味理解:递归就像“拆俄罗斯套娃”。先一层层拆开找最里面的小娃娃(递推),这是问题的拆解过程;然后从最里面的娃娃开始,一层层还原回去(回归),直到得到最外面的答案。计算5!的递归之旅🔍递归深入:问题层层拆解从factorial(5)开始,函数不断调用自身,将大问题拆分为更小的子问题:
5×factorial(4)→5×(4×factorial(3))→5×(4×(3×factorial(2)))触底时刻:遇到终止条件n=1拆解到最深处:5×(4×(3×(2×factorial(1))))
此时factorial(1)=1,不再继续调用,开始触发“回溯”!✨结果回溯:数值步步归并拿到基础结果后,从内向外层层计算返回值:
5×(4×(3×2))→5×(4×6)→5×24最终答案:得出结果所有子问题解决完毕,最终合并计算得到:
5!=120危险!无限递归!想象一下,如果在写阶乘函数时,不小心漏掉了关键的终止条件`ifn==1:return1`,程序的执行逻辑就会像脱缰的野马一样彻底失控!这时候,代码的运行过程会变成什么样子呢?第一步:正常起步factorial(5)
想要计算5的阶乘,得先算4!第二步:没有尽头...→0→-1
突破1的边界,负数也继续算第三步:无限坠落根本停不下来!
函数自己调用自己,形成死循环严重后果:程序崩溃!就像小人在无限延伸的楼梯上一直往下跑,永远找不到终点。系统内存和CPU资源会被迅速耗尽,最终程序会抛出错误并强制退出。所以,终止条件就是递归函数的“安全刹车”,千万不能忘!拓展案例:汉诺塔游戏游戏初始设定有三根柱子(A、B、C)和N个大小不一的彩色盘子。初始时,所有盘子像彩虹一样,严格按照“小盘子在上,大盘子在下”的顺序,整齐叠放在A柱子上。移动铁律这是游戏的关键限制!每次操作只能移动一个盘子,并且在任何时刻,都绝对不允许把大盘子放在小盘子的上面,否则游戏就会失败,需要重新开始。最终挑战目标我们的终极任务是:在遵守所有规则的前提下,把A柱子上的这一整叠盘子,完整无损地全部移动到C柱子上。你能算出最少需要移动多少步吗?为什么它是递归算法的经典例题?这个看似简单的益智游戏,随着盘子数量N的增加,移动步数会以2ⁿ-1的规律呈指数级爆炸增长。如果用常规的循环去穷举每一步,逻辑会极其复杂;但如果用递归思想将问题拆解——把“移动N个盘子”转化为“先移动N-1个盘子到中转柱,再移动最大盘,最后移动N-1个盘子到目标柱”,整个解题过程就会变得简洁、优雅且易于理解。如何用递归解决汉诺塔?第一步:移走上方N-1个先把柱子A上的N-1个盘子整体“搬家”到柱子B。这本身就是一个规模更小的汉诺塔问题,我们需要先递归地解决这个子任务,为移动最大的盘子腾出空间。第二步:移动最底盘子此时柱子A只剩下最大的第N个盘子,直接把它从A移到目标柱子C。这是整个过程中最直观、最基础的一步,也是递归链条中的一个实际操作节点。第三步:归位N-1个盘子最后,把暂存在柱子B上的N-1个盘子再次“搬家”到柱子C。这同样是一个递归子问题,完成这一步后,所有盘子就都按规则从A移到了C。关键终止条件:最简单的情况当N=1时,递归停止!此时只有一个盘子,无需复杂操作,直接把它从起点A移到终点C即可。这是整个递归算法的“锚点”,没有它程序就会无限循环下去。递归算法的优缺点核心优势·化繁为简代码极致简洁摒弃复杂的循环嵌套,仅需几行核心逻辑即可描述复杂问题。极大提升了代码的可读性,让人一眼看懂程序意图。思维高度贴合完美契合人类“大事化小、层层拆解”的直觉思维。将一个庞大的原问题,自然地分解为结构相同的小问题去解决。💡就像玩俄罗斯套娃,通过函数自我调用,递归让程序结构变得极具数学美感,是处理分治问题时最优雅的解决方案之一。潜在局限·性能挑战栈内存压力大每次递归调用都会在内存栈中压入新的栈帧。一旦递归深度过大,极易引发“栈溢出”错误,导致程序意外崩溃。重复计算损耗朴素递归未做优化时,会反复计算大量重叠的子问题(如斐波那契数列),导致时间复杂度指数级上升,效率低下。⚠️虽然写法优雅,但在工程实践中,面对海量数据时往往需要结合“记忆化搜索”或“尾递归优化”来规避性能陷阱,或直接改用迭代方案。什么时候用递归?层层拆解子问题当复杂问题可以被不断拆解成结构完全相同的小问题时。就像剥洋葱一样,每一层的处理逻辑都一模一样,直到遇到最基础的简单情况。天然嵌套结构面对具有层级关系的数据结构时,比如树形结构、嵌套的文件夹或者复杂的图形结构。递归能非常直观地模拟“深入”和“回溯”的过程,代码更易读。定义即递归如果问题的数学公式或逻辑定义本身就是递归的,比如阶乘计算(n!=n×(n-1)!)或斐波那契数列。这时候使用递归是最自然、最直接的实现方式。递归核心心法:大事化小,小事化了递归就像一个聪明的“分身术”。只要我们能找到问题的递归关系(如何拆分子问题)和终止条件(最小的可解问题),就能把一个看起来很难的复杂任务,拆解成无数个可以重复执行的简单步骤。这不仅让代码结构变得优雅简洁,更让逻辑一目了然!核心思想大比拼枚举算法就像一个拿着放大镜的勤奋侦探,面对复杂的案情,把所有“嫌疑人”都耐心地排查一遍。不遗漏任何一种可能性,通过逐一验证,最终从海量线索中找出那个唯一的真凶。核心策略:逐一排查地毯式搜索,虽然看似笨拙,却能保证结果的绝对准确性。递归算法像一位运筹帷幄的将军,面对庞大的战役,把一个复杂的大任务分解给几个小队长。小队长再将任务继续拆解给士兵,直到任务小到士兵可以直接执行,最终通过层层协作完成目标。核心策略:问题拆解化繁为简,利用自身解决相似的子问题,高效且优雅。实现方式的不同枚举算法核心机制:循环结构主要依靠for、while等循环语句来驱动程序执行。让计算机像“数数”一样,按照设定的规则重复遍历所有可能的情况,直到找到目标结果或完成全部检查。递归算法核心机制:自我调用核心在于函数自己调用自己。把一个复杂的大问题,层层拆解成规模更小的同类子问题,直到子问题简单到可以直接求解,再通过回溯将结果组合起来得到最终答案。各有所长枚举算法适用于范围有限、答案比较零散的问题。就像在散落的积木堆里,一块一块翻找目标积木一样,虽然直接但很有效,适合处理可能性不太多的场景。核心思路:范围小·可能性少·逐个排查递归算法适用于嵌套重复、可以被层层拆解的问题。就像剥洋葱一样,每次都做同样的动作——剥掉最外层,直到碰到核心,把大问题变成无数个相似的小问题。核心思路:可分解·重复性·自我调用💡小智慧:它们没有绝对的优劣之分,只是解题思路不同。面对简单直接、数量可控的问题时,枚举法是最朴实的好帮手;而面对像俄罗斯套娃一样层层嵌套的复杂结构时,递归法则能以优雅的方式化繁为简。灵活选择,就是最好的策略!优缺点对比总结枚举算法核心思想像在玩具箱里挨个翻找!逐一排查所有可能性,筛选出符合条件的有效解,过程直白不绕弯。核心结构依靠循环结构(for/while)作为骨架,通过重复执行一段代码,机械地遍历每一个候选答案。适用场景适合数据范围有限、结构零散的小问题。比如在固定长度的列表里找特定数字,或者简单的密码破译。算法特点逻辑非常简单,像数数一样容易上手。但面对海量数据时效率较低,虽然“笨”但是绝对可靠,不会遗漏。递归算法核心思想像俄罗斯套娃!把一个复杂的大问题,层层拆解成一模一样的小问题,直到问题小到能直接解决。核心结构函数自我调用的魔法!在满足“终止条件”前,函数不断调用自己来解决缩小版的子问题。适用场景处理天然具有嵌套或重复性的问题。例如计算斐波那契数列、走迷宫路径,或者处理树形结构的数据。算法特点代码写起来超级简洁优雅!但每一次调用都需要占用内存,就像叠盘子,叠太多了(深度过大)容易“倒”掉。算法选择小向导第一问:可能的解多吗?先看看问题的解空间有多大,这决定了我们是否能一个个去尝试。不多(范围小)直接穷举!试试枚举法,简单直接效率高。很多(范围大)枚举太慢啦,得换个更聪明的思路。第二问:能拆解问题吗?看看复杂问题能不能变成几个一模一样的简单小问题来解决。能(同类子问题)大事化小!试试递归法,让代码更优雅。不能(独立问题)递归不适用,考虑其他线性或迭代方法。💡核心心法:算法没有绝对的好坏,只有场景的适配。先看规模定枚举,再看结构定递归,灵活运用才是解题的关键哦!实操任务一:百钱买百鸡经典数学问题挑战现有100元钱,需要恰好买100只鸡。已知市场价格:公鸡每只5元,母鸡每只3元,小鸡1元可以买3只。
请你算一算,在钱数和鸡的总数都刚好为100的情况下,公鸡、母鸡、小鸡分别应该购买多少只呢?编程实现目标
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 广西壮族自治区玉林市一级建造师考试(机电工程管理与实务)题库含答案(2025年)
- 2025年延边吉林职业技能竞赛(无人机装调检修工)自测试题及答案
- 一级建造师考试(通信与广电工程管理与实务)真题及答案(陕西)
- FXR-agonist-15-生命科学试剂-MCE
- 2026oracle数据库基础面试题及答案
- 2026linux面试题及答案大全
- 2026java美团面试题目及答案
- 2026年济南综合保税区招聘城管协管人员易考易错模拟试题(共500题)试卷后附参考答案
- 2026年河南许昌市12345政务服务热线平台招聘10人易考易错模拟试题(共500题)试卷后附参考答案
- 2026年河南省安阳市龙安区事业单位招聘20人易考易错模拟试题(共500题)试卷后附参考答案
- 预防接种妈妈课堂课件
- 《钢结构工程施工员培训教材》
- GB/T 31166-2014高尔夫球运动安全防护要求
- GB/T 193-2003普通螺纹直径与螺距系列
- 第六课-我是跟旅游团一起来的课件
- 边坡巡检记录表
- 《武汉理工大学学报》论文格式要求
- 沼气的利用与可持续发展课件
- 地灾评估专家
- DB6101∕T 3094-2020 城市生产建设项目水土保持技术规范
- DB32-T 3260-2017水利工程施工图设计文件编制规范-(高清现行)
评论
0/150
提交评论