递归算法与递归程序德罗斯特效应(Drosteeffect)是递归的一种视觉形式,是指一张图片的某个部分与整张图片相同,如此产生无限循环
递归算法:是一种直接或者间接地调用自身的算法
在定义一个过程或函数时出现调用本过程或本函数的成分,称之为递归
什么时候调用递归
什么时候调用递归
问题4-16:著名的意大利数学家斐波那契(Fibonacci)在他的著作《算盘书》中提出了一个“兔子问题”:假定小兔子一个月就可以长成大兔子,而大兔子每个月都会生出一对小兔子
如果年初养了一对小兔子,问到年底时将有多少对兔子
(当然得假设兔子没有死亡而且严格按照上述规律长大与繁殖)(1)分析问题
这个表格虽然解决了斐波那契的兔子问题(年底时兔子的总数是144只),但仔细观察一下这个表格,你会发现兔子的数目增长得越来越快,如果时间再长,只用列表的方法就会有困难
(例如,你愿意用列表的方法求出5年后兔子的数目吗
)我们需要研究表中的规律,找出一般的方法,去解决这个问题
1月2月3月4月5月6月7月8月9月10月1112小兔111235813213455大兔1123581321345589合计1123581321345589144仔细研究表4-8,你有些什么发现
每一个月份的大兔数、小兔数与上一个月的数字有什么联系
每个月的小兔子数等于上个月的大兔子数;每个月的大兔子数等于上个月的兔子总数;从第三个月起:每个月的兔子总数等于前两个月的兔子数之和
(2)(2)设计算法
“兔子问题”很容易列出一条递推式而得到解决
假设第N个月的兔子数目是F(N),我们有:F(N)=1,当N=1、2时F(N-1)+F(N-2),当N>=3时前面学过:前面学过:自定义函数的定义格式:Function函数名(参数表)[Astype]过程中的代码EndFunction调用函数的格式:函数名(参数表)(3)(3