怎样学习递归? - V2EX
如果想在 V2EX 获得更好的推广效果,欢迎了解 PRO 会员机制:
pro/about

如果你经常使用铜币置顶主题,持有 V2EX Solana Token 会在每日签到时获得额外铜币:
solana
ninechapter

怎样学习递归?

  •  
  •   ninechapter Dec 12, 2019 1836 views
    This topic created in 2345 days ago, the information mentioned may be changed or developed.

    专栏 | 九章算法
    网址 | www.jiuzhang.com

    递归要和迭代比较来看。

    迭代是重复反馈过程的活动,其目的通常是为了逼近所需目标或结果。每一次对过程的重复称为一次“迭代”,而每一次迭代得到的结果会作为下一次迭代的初始值,因此迭代是从前往后计算的。

    递归则是一步一步往前递推,直到递归基础,寻找一条路径, 然后再由前向后计算。

    迭代是从前往后计算的,而递归则是先从后往前推,然后再由前往后计算,有“递”又有“归”。

    通俗来讲:引自 @lishichengyan

    一个小朋友坐在第 10 排,他的作业本被小组长扔到了第 1 排,小朋友要拿回他的作业本,可以怎么办?

    他可以拍拍第 9 排小朋友,说“帮我拿第 1 排的本子”,而第 9 排的小朋友可以拍拍第 8 排小朋友,说“帮我拿第 1 排的本子”...如此下去,消息终于传到了第 1 排小朋友那里,于是他把本子递给第 2 排,第 2 排又递给第 3 排...终于,本子到手啦!

    这就是递归,拍拍小朋友的背可以类比函数调用,而小朋友们都记得要传消息、送本子,是因为他们有记忆力,这可以类比栈。

    更严谨一些,递归蕴含的思想其实是数学归纳法:为了求解问题 p ( n ),首先解决基础情形 p ( 1 ),然后假定 p ( n-1 )已经解决,在此基础上若 p ( n )得解,那所有问题均得解。

    递归三要素

    递归的定义:接受什么参数,返回什么值,代表什么意思 。当函数直接或者间接调时,则发了递归

    递归的拆解:每次递归都是为了让问题规模变

    递归的出:必须有个明确的结束条件。因为递归就是有“递”有“归”,所以必须又有一个明确的点,到了这个点,就不用“递下去”,而是开始“归来”。

    递归的过程

    下面这个求 n! 的例子中,递归出口(确定递归什么时候结束)是 fun(1)=1,递归体(确定递归求解时的递归关系)是 fun(n)=n*fun(n-1),n>1。

    int fun(int n){ if(n==1) return 1; else return n*fun(n-1); } 

    递归经典案例还有斐波那契数列、阶阶乘等,想要更好地掌握这个知识点,可以去听《递归四讲》哦~

    递归四讲》这门原价$199 的课程,现在免费即可获得

    参与方式

    戳我免费试听后,添加九章 Sunny 微信 jiuzhang15,回复 [v2ex 递归] + 试听报名截图即可免费获得本课程

    No Comments Yet
    About     Help     Advertise     Blog     API     FAQ     Solana     925 Online   Highest 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 27ms UTC 20:33 PVG 04:33 LAX 13:33 JFK 16:33
    Do have faith in what you're doing.
    ubao msn snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86