1、学完本节后,你能够函数的递归调用 从前有座山,山上有座庙,庙里有一个老和尚从前有座山,山上有座庙,庙里有一个老和尚和一个小和尚,老和尚正在给小和尚讲故事。讲的是和一个小和尚,老和尚正在给小和尚讲故事。讲的是什么故事呢?他说,从前有座山什么故事呢?他说,从前有座山 函数的递归调用递归调用:l 直接递归调用直接递归调用指函数直接调用自己;l 间接递归调用间接递归调用调用另外一个函数的过程中出现 调用该函数自身。使用递归调用解决问题的方法:使用递归调用解决问题的方法:以同样的以同样的方式分别方式分别去处理各去处理各个子问题;个子问题;把问题划把问题划分为若干分为若干个子问题个子问题把各个子问把各个子
2、问题的处理结题的处理结果综合起来,果综合起来,形成最终的形成最终的处理结果。处理结果。划分划分解决解决组合组合递归调用过程(两个阶段)递归调用过程(两个阶段)1、递推阶段、递推阶段。2、回归阶段、回归阶段。Bfact(2)fact(2)=2*fact(1)=2*fact(1)=2*1=2*1=2=2返回返回 DAfact(3)fact(3)=3*fact(2)=3*fact(2)=3*2=3*2=6=6E E返回返回 Cfact(1)=1调用调用调用调用【例例4-74-7】:用递归法求n!【例例4-84-8】:汉诺塔在语法上(在语法上(简单简单)递归即为普通的函数调用。递归即为普通的函数调用。在算法上(在算法上(难难)如何找到如何找到递归形式递归形式?如何找到如何找到递归边界递归边界?【课堂实践课堂实践4-44-4】斐波那契数列指的是这样一个数列:1、1、2、3、5、8、13、21、这个数列从第三项开始,每一项都等于前两项之和。求斐波那契数列的第20项。编写一个计算器程序,要求可以根据菜单显示,实现简单的整数的加、减、乘、除功能。分别输入1,2,3,4进行相应的加、减、乘、除运算。若输入0,则退出程序。分析1、如何实现菜单操作?2、如何实现各计算函数?递归的过程。函数的递归调用。类似引例问题的分析与实现。使用递归解决问题。再再 见见