程序调用自身的编程技巧称为递归( recursion)。递归做为一种算法在程序设计语言中广泛应用。 一个过程或函数在其定义或说明中有直接或间接调用自身的一种方法,它通常把一个大型复杂的问题层层转化为一个与原问题相似的规模较小的问题来求解,递归策略只需少量的程序就可描述出解题过程所需要的多次重复计算,大大地减少了程序的代码量。递归的能力在于用有限的语句来定义对象的无限集合。一般来说,递归需要有边界条件、递归前进段和递归返回段。当边界条件不满足时,递归前进;当边界条件满足时,递归返回。——这是百度百科说的。

其实说白了,就是递归方法本身调用自己而进行的运算,下面举个例子说明一下这个例子就是很著名的——斐波那契数列。

0, 1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89, 144, 233,377,610,987,1597,2584,4181,6765,10946,17711,28657,46368……

可以看出来第三个数就是前面两个数相加从而得到的。

如果使用正常的循环进行解决的话就是这样:

public class FeiBo{

public static void main(String[] args) {

int num1=0;

int num2=1;

int numn=1;

int n=10;

for (int i = 3; i <=n; i++) {

numn=num1+num2;

num1=num2;

num2=numn;

}

System.err.println(n+"个数的结果为:"+numn);

}

}

运行结果为:

10个数的结果为:34

这是使用正常的循环方法进行运算,如果使用递归的话就是一下这样:

public static int Recursion(int n){

if(n==1){

return 0;

}

if(n==2){

return 1;

}

return Recursion(n-1)+Recursion(n-2);

}

递归需要结束条件,到情况下递归就不需要继续调用,结束递归。上面案例结束条件就是当n=1或者2的时候,就返回0或者1,而不是继续调用递归方法本身了。

递归最主要的两个条件就是,自己调用自己,结束递归的条件。

因为递归是自己调用自己所以浪费资源大,运行时间比循环长很多,运行慢,效率底。

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持脚本之家。

java斐波那契 递归_Java递归实现斐波那契数列相关推荐

  1. java 斐波那契编程_Java实现Fibonacci(斐波那契)取余的示例代码

    Java实现Fibonacci(斐波那契)取余的示例代码 发布时间:2020-10-09 06:05:36 来源:脚本之家 阅读:78 作者:南墙 Description Fibonacci数列的递推 ...

  2. java 快速排序 递归_Java递归快速入门

    java 快速排序 递归 The function calls itself until someone stops it. 该函数将自行调用,直到有人停止它为止. Recursion can fee ...

  3. java文件递归_java递归处理文件夹和文件

    import java.io.File; /** * 文件综合使用示例 */ public class FileDelete { public static void main(String[] ar ...

  4. java实现二分法递归_Java递归实现二分法

    /* 递归实现二分法的进化 */ import java.util.Scanner; public class RecursionNext2{ public static void main(Stri ...

  5. java xml 递归_Java递归遍历XML所有元素

    import org.dom4j.Document; import org.dom4j.DocumentHelper; import org.dom4j.DocumentException; impo ...

  6. java阶乘递归_java递归求阶乘,java实现递归阶乘详解

    下面要给大家讲到的就是和java递归求阶乘相关的内容,那么你知道应该如何实现吗?一起通过下面的例子来详细的了解吧. 话不多说,就直接给大家上代码了!public class Factorial { p ...

  7. java 文件递归_java 递归,打印文件夹下所有的文件

    public class FileDemo { public static void main(String[] args) { File file=new File("D:\\eclips ...

  8. Python 算法之递归与尾递归,斐波那契数列以及汉诺塔的实现

    文章目录 递归概念 递归要素 递归与迭代的区别 示例一:阶乘 示例二:斐波那契数列 示例三:汉诺塔问题 尾递归 Python 中尾递归的解决方案 递归概念 递归:程序调用自身的编程技巧称为递归( re ...

  9. 利用递归、迭代解决斐波那契数列问题与汉诺塔难题

    有人说,"普通程序员使用迭代,天才程序员使用递归",真是这样吗? 1.浅谈递归与迭代 <1>递归的基本概念: 程序调用自身的编程技巧称为递归,是函数自己调用自己. 一个 ...

最新文章

  1. oracleHelper 操作帮助类
  2. VC++ COM、ATL开发入门示例
  3. 师范类专业物理和计算机选哪个,师范专业太多,哪些师范专业含金量高?资深教师:选这4个就对了...
  4. Python + wordcloud + jieba 十分钟学会用任意中文文本生成词云
  5. HDU ACM 1728 逃离迷宫 (广搜BFS)
  6. ERP财务报表快消失了?用它做财务系统根本不够用
  7. Python之倒序切片
  8. java pdf 转txt文件怎么打开_使用iText将TXT文件转换为PDF(保留格式)
  9. sqlserver数据库脱机和分离的区别
  10. 分享几款流程图软件,帮助你熟悉工作流程
  11. 蚁群算法详解及其工程源码
  12. python库itchat介绍(自动登录微信,自动回复消息)
  13. Wireshark网络流量分析工具
  14. Rime输入法第三方词库配置
  15. 【魔兽世界插件】魔兽世界插件实战笔记从入门到放弃的心理历程 第七节 按钮的创建和点击事件
  16. Windows Azure 解决方案系列: Real World Windows Azure: 与微软杰出工程师, Sean Nolan的访谈...
  17. 如何清除掉“无法删除”的顽固文件
  18. 如何下载GitHub网站上的代码的方法(未完,更新中。。。)
  19. struct timeval结构体 以及 gettimeofday()函数、struct timespec结构体
  20. java 月亮升起,描写月亮升起的句子

热门文章

  1. 造梦西游4手游服务器维护,造梦西游4手机版新服新年新征程将开放
  2. 各种语音编码带宽计算
  3. Sortable.js拖放排序JavaScript库
  4. 列表+样式初始化+元素类型转换
  5. PageAdmin个性化建站心得——图片处理
  6. 网络教育风生水起,9158如何脱颖而出?
  7. Clannad——让我了解友情,亲情和爱情的动画片
  8. OpenGL--使用Shader
  9. MySQL之DISTINCT的用法
  10. 5G网络架构(全面)2020-11-23