这里有新鲜出炉的 Java 并发编程示例,程序狗速度看过来!
java 是一种可以撰写跨平台应用软件的面向对象的程序设计语言,是由 Sun Microsystems 公司于 1995 年 5 月推出的 Java 程序设计语言和 Java 平台(即 JavaEE(j2ee), JavaME(j2me), JavaSE(j2se))的总称。
Java 递归算法是基于 Java 语言实现的递归算法。递归算法对解决一大类问题很有效,它可以使算法简洁和易于理解。接下来通过本文给大家介绍 Java 递归算法相关知识,感兴趣的朋友一起学习吧
递归算法是一种直接或者间接调用自身函数或者方法的算法。Java 递归算法是基于 Java 语言实现的递归算法。递归算法的实质是把问题分解成规模缩小的同类问题的子问题,然后递归调用方法来表示问题的解。递归算法对解决一大类问题很有效,它可以使算法简洁和易于理解。
递归算法解决问题的特点:
1)递归就是方法里调用自身。
2) 在使用递增归策略时,必须有一个明确的递归结束条件,称为递归出口。
3)递归算法解题通常显得很简洁,但递归算法解题的运行效率较低。所以一般不提倡用递归算法设计程序。
4)在递归调用的过程当中系统为每一层的返回点、局部量等开辟了栈来存储。递归次数过多容易造成栈溢出等,所以一般不提倡用递归算法设计程序。
递归算法所体现的 "重复" 一般有三个要求:
一是每次调用在规模上都有所缩小 (通常是减半);
二是相邻两次重复之间有紧密的联系,前一次要为后一次做准备 (通常前一次的输出就作为后一次的输入);
三是在问题的规模极小时必须用直接给出解答而不再进行递归调用,因而每次递归调用都是有条件的 (以规模未达到直接解答的大小为条件),无条件递归调用将会成为死循环而不能正常结束。
为了理解递归算法,现举一个实例说明如下:
问题描述:
求解 Fibonacci 数列的第 10 个位置的值?(斐波纳契数列(Fibonacci Sequence),又称黄金分割数列,指的是这样一个数列:1、1、2、3、5、8、13、21、…… 在数学上,斐波纳契数列以如下被以递归的方法定义:F0=0,F1=1,Fn=F(n-1)+F(n-2)(n>=2,n∈N*))
Java 代码清单:
- package com.bjpowernode.test;
- public classFab {
- public static void main(String args[]) {
- System.out.println(fab(5));
- }
- private static int fab(int index) {
- if (index == 1 || index == 2) {
- return 1;
- } else {
- return fab(index - 1) + fab(index - 2);
- }
- }
- }
程序分析:
这个实例是非常经典的实例,主要是利用递归实现了 Fibonacci 数列。这个递归算法的出口是在
- if (index == 1 || index == 2) {
- return 1;
- }
这个代码段上,如果程序的 index 符合条件就会停止进行递归。所以这个程序的运行流程是:
程序分析到这里,递归的实现也就完成了,读者可以自己简单的做个 demo,感受一下这个算法的精妙之处,其实很多人都在说算法难,难于上青天,其实掌握算法的根才是最重要的,什么是算法的根呢,就拿这个递归算法来说吧,我感觉这个根就是那个出口,只要找到这个出口所在,那么算法自然而然就能水到渠成了。
以上所述是小编给大家介绍的 Java 递归算法详解 (动力节点整理),希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对 PHPERZ 网站的支持!
来源: http://www.phperz.com/article/17/1219/357790.html