欢迎来到天天文库
浏览记录
ID:43485191
大小:413.55 KB
页数:8页
时间:2019-10-07
《Java递归算法》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、递归算法阿尔法瑟从前有座山,山上有座庙,庙里有一个老和尚和一个小和尚,老和尚正在给小和尚讲故事。讲的是什么故事呢?他说:从前有座山,山上有座庙,庙里有...如同老和尚给小和尚讲故事一样,故事本身包含了故事自己--自己调用自己递归的概念:定义一个方法时,出现本方法调用本方法的过程,称之为递归递归的特点:1.必然有一个边界条件2.使用递归代码往往更加简洁,可读性强什么时候使用递归?•有许多数学公式、数列等的定义是递归的。例如,求n!和1+2+3+....+n。•例如n的阶乘和n的累加定义:1ifn=1f(n)f(n)f(n1)else1ifn=1f(n
2、)f(n)f(n1)else普通实现方式与递归实现方式的比较:两个算法均用来计算1+2+3+...n的和,左边使用递归算法实现,右边是一般的方法,通过比较发现:1.递归算法有一个边界条件n=1,当满足n为1,返回自身2.递归算法的返回值有两种情况,满足边界条件返回特定值,不满足边界条件,返回自身调用自身的形式3.非递归算法没有明确指出边界条件,但是利用了for循环,隐式地传达了边界,i<=n时不再相加4.非递归算法还建立了局部变量sum,用来作为方法的返回值经典递归算法实例:--斐波那契数列问题:兔子出生以后两个月就能生小兔,如果每月生一次且恰好生一对
3、小兔(雌雄各一只),且出生的兔子都能成活。试问:由1对小兔开始,一年后共有多少对兔子,两年后共有多少对兔子?思路:在第0月有1对兔子;第1月也只有1对兔子;在第2月这对兔子生了1对小兔,共有两对兔子;在第3月,老兔子又生了1对小兔,共有3对兔子;在第4个月,老兔子和第2个月出生的小兔各生了一对小兔,共有5对兔子;在第5个月,第3个月的3对兔子各生了一对小兔,共有8对兔子;在第6个月,第4个月的5对兔子各生了一对小兔,共有13对兔子……如此类推经典递归算法实例:--斐波那契数列不难得到兔子总数量和经过月数之间的关系如下表:而斐波那契数列就用来描述一组具有兔子总数规
4、律的数列,它具有的特征是从第3个数起,每个数都是前两个数的和!JAVA中斐波那契数列的实现完结:让老和尚停止讲故事!我PPT都要讲完了,老和尚还在喋喋不休的讲故事,终于老和尚60岁了讲不动了...
此文档下载收益归作者所有