Python程序设计基础04_7递归ppt课件.pptx
《Python程序设计基础04_7递归ppt课件.pptx》由会员分享,可在线阅读,更多相关《Python程序设计基础04_7递归ppt课件.pptx(19页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、在此输入您的封面副标题Python程序设计基础程序设计基础04_7递归递归杭州师范大学杭州师范大学 虞歌虞歌 第第2页页Python程序设计基础程序设计基础函数函数杭州师范大学杭州师范大学 虞歌虞歌 第第3页页Python程序设计基础程序设计基础函数函数每个每个数的阶乘与比它小数的阶乘与比它小1的数的阶乘之间有如下关系:的数的阶乘之间有如下关系:n!=n(n-1)!,将求,将求n!转换成求转换成求(n-1)!,而,而(n-1)!又可以转换成求又可以转换成求(n-2)!,(n-1)!=(n-1)(n-2)!,重复这个过程,直至,重复这个过程,直至0!=1。0!=1称为称为基本情况基本情况。当当“
2、递推递推”到基本情况时,就可以开始到基本情况时,就可以开始“回归回归”,通过,通过0!求出求出1!,通过,通过1!求求出出2!,通过,通过(n-2)!求出求出(n-1)!,最后通过,最后通过(n-1)!求出求出n!。如果如果某个问题的求解可以转换成规模更小的或者更趋向于求出解的同类子某个问题的求解可以转换成规模更小的或者更趋向于求出解的同类子问题的求解,并且从子问题的解可以构造出原问题的解。这种求解问题的问题的求解,并且从子问题的解可以构造出原问题的解。这种求解问题的思想称为递归思想称为递归。递归由两个过程组成:递推和回归。每一步的递推把问题简化成形式相同、但递归由两个过程组成:递推和回归。每
3、一步的递推把问题简化成形式相同、但较简单一些的情况,直至遇到基本情况较简单一些的情况,直至遇到基本情况。正确正确的递归必须是可终止的,递归至少要有一个基本情况,并且要确保递推过的递归必须是可终止的,递归至少要有一个基本情况,并且要确保递推过程最终会到达基本情况。程最终会到达基本情况。杭州师范大学杭州师范大学 虞歌虞歌 第第4页页Python程序设计基础程序设计基础函数函数杭州师范大学杭州师范大学 虞歌虞歌 第第5页页Python程序设计基础程序设计基础函数函数factorialfactorial函数是递归函数函数是递归函数。杭州师范大学杭州师范大学 虞歌虞歌 第第6页页Python程序设计基础
4、程序设计基础函数函数factorial函数共被调用函数共被调用5次,即次,即factorial(4)、factorial(3)、factorial(2)、factorial(1)、factorial(0)。factorial(4)是是main函数调用的,其余函数调用的,其余4次是在次是在factorial函数中调用的,即递归调用函数中调用的,即递归调用4次次。调用调用factorial函数时函数时,并不是,并不是立即得到立即得到factorial(n)的的值值,递归,递归调用,直到调用,直到factorial(0)时才有时才有确定值确定值,直接,直接返回返回1。factorial(1)的返回值
5、为的返回值为1*factorial(0),即,即1;factorial(2)返回值为返回值为2*factorial(1),即,即2;factorial(3)返回返回6,最后,最后factorial(4)返回返回24。杭州师范大学杭州师范大学 虞歌虞歌 第第7页页Python程序设计基础程序设计基础函数函数递归函数递归函数有如下有如下特性:特性:函数函数使用使用if语句处理各种不同情况。语句处理各种不同情况。各种各种不同情况中至少包括一个基本情况,用于结束递归。不同情况中至少包括一个基本情况,用于结束递归。每次每次递归调用都会对原问题进行递推,使其逐步逼近某个基本情况,直至遇到递归调用都会对原问
6、题进行递推,使其逐步逼近某个基本情况,直至遇到该基本情况为止该基本情况为止。使用使用递归求解递归求解问题就是将原问题分解为子问题。如果子问题与原问题是相问题就是将原问题分解为子问题。如果子问题与原问题是相似的,只是规模较小,可以递归使用相同的方法求解子问题。似的,只是规模较小,可以递归使用相同的方法求解子问题。杭州师范大学杭州师范大学 虞歌虞歌 第第8页页Python程序设计基础程序设计基础函数函数猴子猴子吃桃问题。猴子第吃桃问题。猴子第1天摘下若干个桃子天摘下若干个桃子,吃,吃了一半,还不过瘾,又多吃了一半,还不过瘾,又多吃了一个。第了一个。第2天早上又将剩下的桃子吃掉一半,又多吃了一个。以
7、后每天早天早上又将剩下的桃子吃掉一半,又多吃了一个。以后每天早上都吃了前一天剩下的一半另加一个。到第上都吃了前一天剩下的一半另加一个。到第10天早上想再吃时,就只剩下天早上想再吃时,就只剩下一个桃子了。求第一个桃子了。求第1天共摘了多少个桃子。天共摘了多少个桃子。从第从第10天仅剩一个桃子开始往前推算,第天仅剩一个桃子开始往前推算,第9天的桃子个数为:天的桃子个数为:(第第10天的桃子个天的桃子个数数+1)2,第,第8天的桃子个数为:天的桃子个数为:(第第9天的桃子个数天的桃子个数+1)2,第,第1天的桃天的桃子个数为:子个数为:(第第2天的桃子个数天的桃子个数+1)2。假设第假设第n天的桃子
8、个数为天的桃子个数为peach(n),第,第n+1天的桃子个数为天的桃子个数为peach(n+1),得到,得到如下递归关系:如下递归关系:杭州师范大学杭州师范大学 虞歌虞歌 第第9页页Python程序设计基础程序设计基础函数函数peachpeach函数是递归函数函数是递归函数。杭州师范大学杭州师范大学 虞歌虞歌 第第10页页Python程序设计基础程序设计基础函数函数用用递归求递归求xn,其中,其中n为整数。为整数。当当n0时,可以得到如下递归关系:时,可以得到如下递归关系:当当n0,这样也可以利用上面的递归关系。,这样也可以利用上面的递归关系。杭州师范大学杭州师范大学 虞歌虞歌 第第11页页
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- Python 程序设计 基础 04 _7 递归 ppt 课件
限制150内