内容正文:
递归算法实例及程序实现
从前有座山,
山里有座庙,
庙里有个老和尚,
给小和尚讲故事,
故事是什么呢?
从前有座山,
山里有座庙,
庙里有个老和尚,
给小和尚讲故事,
故事是什么呢?
从前有座山,
山里有座庙,
庙里有个老和尚,
给小和尚讲故事,
故事是什么呢?
老和尚的故事…
数果子问题
2
3
3
1
4
2
?
数果子问题
递归
将要处理的问题划分为一个或多个子问题,而处理子问题的方法与处理原问题的方法是一样的,这样的处理方法称为递归。
案例一、到底几岁了?
我比左边的2倍小2岁
我比左边的2倍小2岁
我比左边的2倍小2岁
我比左边的2倍小2岁
我比左边的2倍小2岁
我比左边的2倍小2岁
我3岁
案例一、到底几岁了?
算法规则:
1、第1个人的年龄=3\
2、第N个人的年龄=第N-1人的年龄*2-2
求第N个人的年龄:
if 是第1个人 then
年龄=3
else
年龄=前一人年龄*2-2
end if
案例一、到底几岁了?
VB代码:
Function Age(n As Integer) As Integer
if n=1 then
age= 3
else
age= age(n-1) * 2 - 2
end if
End Function
求第N个人的年龄
if 是第一个人 then
年龄=3
else
年龄=前一人年龄*2-2
end if
案例二、斐波那契数列问题
斐波纳契数列,又称黄金分割数列,指的是这样一个数列:
1、1、2、3、5、8、13、21、34、65……
这个数列从第三项开始,每一项都等于前两项之和。
求:数列中的第N项是几?
算法规则:
1、最初两项值为1
2、第N项的值是它之前两项之和
求第N个斐波纳切数
if 是最初两项 then
斐波纳切数=1
else
斐波纳切数=前两个斐波纳切数之
end if
案例二、斐波那契数列问题
求第N个斐波纳切数
if 是最初两项 then
斐波纳切数=