课件24张PPT。二 带变量的递归同学们,你们能想象生活中有哪些类似的现象?从前有座山,山里有个庙,庙里有个老和尚讲故事,讲什么呢?从前有座山,山里有个庙……
递归思想从前有座山你的眼睛他的眼睛递归法 如果一个函数在定义时,直接或间接地调用了自己,这种算法在程序设计中统称为递归法。?和尚移盘
一个庙里有三个柱子(A,B,C),第一个柱子( A )有7个盘子,从上往下盘子越来越大。要求庙里的老和尚把这7个盘子全部移动到第三个柱子( C)上。
规则:1、一次只能移动一个盘子
2、移动的时候始终只能小盘子压着大盘子
3、A柱和C柱不能相互直接移动。
第一个和尚想法
要是有一个人能把前6个盘子移动好,我移动最后一个盘子,我的任务就能完成了。
Pan(7)=2+pan(6)*3
第二个和尚想法
要是有一个人能把前5个盘子先移动好,我移动最后一个盘子,我的任务也能完成了。
Pan(6)=2+pan(5)*3……?
一直找下去,直到找到第六个和尚为止
pan(2)=2+pan(1)*3?
第七个和尚移盘
把第一个盘子先移动到第二个柱子上,然后再移动到第三个柱子上。
Pan(1)=2?第六个和尚移盘Pan(2)=2+pan(1)*3=8?第五个和尚移盘Pan(3)=2+pan(2)*3=26……Pan(7)=2+pan(6)*3=2186?第一个和尚移盘Pan(7)=2+pan(6)*3Pan(6)=2+pan(5)*3Pan(5)=2+pan(4)*3Pan(4)=2+pan(3)*3Pan(3)=2+pan(2)*3Pan(2)=2+pan(1)*3Pan(1)=2问题下推结果回归递归算法的实现方式:函数的调用和尚移盘算法的实现方式:自定义函数的调用和尚移盘算法的自定义函数:pan(n)和尚移盘算法的实现:Pan(n)=2+pan(n-1)*3Pan(1)练一练桌面:作业和尚移盘和尚移盘.frm递归算法有什么特点?1、递归法:函数直接或间接地调用了自己3、递归必需要有结束条件2、递归分为递推(问题下推)与回归(结果回归)两个过程4、递归函数的调用方式相当耗费计算机资源,因而其效率比较低想一想1.Public Function story( byval n as integer ) as integer
If n==0 then
end
else
story=story(n-1)
end if
end Function想一想2.public sub f(byval n as long )
Dim a as long
a=a+n
print n
end sub3.Public Function f(byval a as integer)as integer
dim b as integer
f=f(a,b)
end fuction 经典数学问题1)1+2+3+……N
2)N!试一试?知识回顾
2、下面哪个问题可以用递归法解决?
(1)钻石图案 (2)百鸡百钱
(3)加密程序 (4)汉诺塔1、递归分为 ( ) 与( ) 两个过程。3、只要调用函数都是递归法?4、递归法必需要有结束条件?现实生活 → 一层梦境 → 二层梦境 → 三层梦境 → 四层梦境
现实生活 ← 一层梦境 ← 二层梦境 ← 三层梦境 ← 四层梦境 ?课后思考
讨论本章学习的五种算法,从程序的执行效率、代码编写的方便性、可读性等方面,分析它们各自的特点,指出其适用范围。谢谢