一、递归函数,通俗的说就是函数本身自己调用自己... 

如:n!=n(n-1)! 

你定义函数f(n)=nf(n-1) 

而f(n-1)又是这个定义的函数。。这就是递归 



二、为什么要用递归:递归的目的是简化程序设计,使程序易读 



三、递归的弊端:尽管非递归函数效率高,但较难编程,可读性较差。递归函数的缺点是添加了系统开销,也就是说,每递归一次,栈内存就多占用一截 



四、递归的条件:需有完毕任务的语句,需满足递归的要求(减小而不是发散) 



五、递归进阶: 

1.用递归算n的阶乘: 

  分析:n!=n*(n-1)*(n-2)...*1 

  public int dReturn(int n){ 

     if(n==1){ 

        return 1; 

     }else{ 

        return n*dReturn(n-1); 

     } 

   } 

2.用递归函数算出1到n的累加:1+2+3+4+..+n 

  public int dReturn(int n){ 

    if(n==1){ 

      return 1; 

    }else{ 

      return n+dReturn(n-1); 

    } 

  } 

3.要求输出一个序列:1,1,2,3,5,8,11......(每个数为前两个数子之和,要求用递归函数) 

  用java递归来表示一个函数:F(n)=F(n-1)+F(n-2);F(0)=1;F(1)=1; 

   分析:X1=1; X2=1; X3=X1+X2; X4=X2+X3; ... ; Xn=X(n-1)+X(n-2) 

   public int F(int n){ 

    if(n==1){ 

      return 1; 

    }else if(n==2){ 

      return 1; 

    }else{ 

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

    } 

  }  

4.java用递归方法反向打印一个整数数组中的各个元素 

   public static void  printAll(int index,int[] arr){ 

      System.out.println(arr[index]); 

      if(index > 0){ 

       printAll(--index,arr); 

      }

   }  

   public static void main(String[] args){ 

      int[] arr={1,2,3,4,5}; 

      printAll(arr.lenth-1,arr); 

   } 

5.编程求解:若一头小母牛,从出生起第四个年头開始每年生一头母牛,按次规律,第 n 年时有多少头母牛? 

   public static int cattle(int n){ 

if(n<=0){ 

  return 0; 

}else if(n<=3){ 

  return 1; 

}else{ 

  return cattle(n-1)+cattle(n-3); 



   } 

   public static void main(String[] args){ 

      int n=10; 

      System.out.println(n+"年后共同拥有"+cattle(n)+"头牛");

}

递归、线性递归、尾递归的概念?

java 递归函数的更多相关文章

  1. 算法:汉诺塔问题(Tower of Brahma puzzle)

    一.算法背景 最早发明这个问题的人是法国数学家爱德华·卢卡斯.传说越南河内某间寺院有三根银棒(A, B, C),上串 64 个金盘. 寺院里的僧侣依照一个古老的预言,以上述规则移动这些盘子:预言说当这 ...

  2. Spark案例分析

    一.需求:计算网页访问量前三名 import org.apache.spark.rdd.RDD import org.apache.spark.{SparkConf, SparkContext} /* ...

  3. [Code] 递归函数在函数式 Java 中的实现

    这里以阶乘函数为例,对于阶乘函数 fact :: Integer -> Integer fact 0 = 1 fact n = n * fact (n - 1) 在函数式 Java 中可以使用 ...

  4. 编写高质量代码:改善Java程序的151个建议(第8章:多线程和并发___建议126~128)

    建议126:适时选择不同的线程池来实现 Java的线程池实现从根本上来说只有两个:ThreadPoolExecutor类和ScheduledThreadPoolExecutor类,这两个类还是父子关系 ...

  5. JVM学习(1)——通过实例总结Java虚拟机的运行机制

    俗话说,自己写的代码,6个月后也是别人的代码……复习!复习!复习!涉及到的知识点总结如下: JVM的历史 JVM的运行流程简介 JVM的组成(基于 Java 7) JVM调优参数:-Xmx和-Xms ...

  6. Java算法之递归打破及在真实项目中的使用实例

    开心一笑 刚才领导问开发:"你觉得这个项目的最大风险是什么",开发说:"加班猝死" , 气氛尴尬了一分钟!!! 提出问题 1.递归算法简单复习 2.如何实现递归 ...

  7. Java获取XML节点总结之读取XML文档节点

    dom4j是Java的XML API,用来读写XML文件的.目前有很多场景中使用dom4j来读写xml的.要使用dom4j开发,需要下载导入dom4j相应的jar文件.官网下载:http://www. ...

  8. Python3学习(二)-递归函数、高级特性、切片

    ##import sys ##sys.setrecursionlimit(1000) ###关键字参数(**关键字参数名) ###与可变参数不同的是,关键字参数可以在调用函数时,传入带有参数名的参数, ...

  9. Java 项目优化实战

    https://blog.coding.net/blog/java-coding-performance 1 Visual VM 2 优化一 2.1 背景 2.2 原实现 2.3 剖析 2.4 方案 ...

随机推荐

  1. glibc 安装( version `GLIBC_2.14' not found")

    在ubuntu上编译的东西 拿到CentOS 下运行 提示 :“/lib64/libc.so.6: version `GLIBC_2.14' not found” 原因是ubuntu上用的libc 版 ...

  2. “\n”与“\r”的区别

    ASCII中“\n”代表着换行,“\r”代表着将光标移动到当前显示行的最左边.

  3. 跨域Ajax请求WebService方法

    一.允许跨域Ajax请求,更改如下配置: 在要调用的WebService上面添加特性标签: 二.以如下返回用户信息的WebService方法为例 三.在另一个网站上通过Ajax访问webService ...

  4. App在后台运行

    App有三种状态: 1. 死亡状态(未打开App); 2. 前台运行状态(打开状态); 3. 后台暂停状态(停止所有动画, 定时器, 多媒体联网等操作) 4. 后台运行状态(后台运行); ------ ...

  5. extjs中第一次访问有效,第二次访问出现部分组件无法显示的,动态改变组件的label值的方法,ExtJs中组件最好少使用ID属性(推荐更多使用Name属性)

    在公司做的一个OA项目中,曾经就遇到了这样的一个问题:(我是在jsp中的div中将js render到div中去的)第一次访问此界面的时候,formpanel上的组件能正常显示,不刷新整个页面的前提下 ...

  6. 【poj3693】Maximum repetition substring(后缀数组+RMQ)

    题意:给定一个字符串,求重复次数最多的连续重复子串. 传说中的后缀数组神题,蒟蒻真的调了很久才对啊.感觉对后缀数组和RMQ的模版都不是很熟,导致还是会有很多各种各样的小错误= = 首先,枚举重复子串的 ...

  7. ASP.NET MVC4 UEditor 的上传图片配置路径

    ASP.NET MV4下,使用UEditor1.4.3最新版本,网址就不说了,去百度官网下载即可,关于在Controler下如何配置,直接上图: 然后再Views下面来个页面引用如下:     < ...

  8. BZOJ_3224_普通平衡树_(Treap)

    描述 http://www.lydsy.com/JudgeOnline/problem.php?id=3224 Treap模板题.支持如下几种操作: 1.插入; 2.删除; 3.rank(x); 4. ...

  9. JAVA用geotools读写shape格式文件

    转自:http://toplchx.iteye.com/blog/1335007 JAVA用geotools读写shape格式文件 (对应geotools版本:2.7.2) (后面添加对应geotoo ...

  10. RatingBar设置显示星星个数

    RatingBar评分控件 项目中遇到问题 marker一下: 关于自定义以及遇到的出现模糊情况 多半是因为切得图除颜色外 不一致的原因 如果大小也不一样,(沃日) 问题是这样的: 我可以通过OnRa ...