当前位置: 首页 > news >正文

java 递归函数

一、递归函数,通俗的说就是函数本身自己调用自己... 
如: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)+"头牛"); 

   } 


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



相关文章:

  • jQuery Validation Engine 表单验证
  • GLES Shader Language 易错集锦
  • python的getopt
  • mac下mysql忘记root密码
  • 编程语言,变量
  • 关于git和github用法
  • Python学习(一)——数据类型
  • 定制微型Linux系统(续)
  • Redis进阶 ----事务
  • 【Spark亚太研究院-构建Spark集群-配置Hadoop伪分布模式并运行Wordcount(2)
  • 《设计模式系列》---组合模式
  • Exchange 2013sp1邮件系统部署-(九)
  • 点与不规则图形关系判断
  • Android开发之初识Camera图像采集
  • jQuery找到GridView控件ItemTemplate模版内的控件
  • Android系统模拟器绘制实现概述
  • HTTP 简介
  • k个最大的数及变种小结
  • LeetCode29.两数相除 JavaScript
  • Linux编程学习笔记 | Linux多线程学习[2] - 线程的同步
  • Python 基础起步 (十) 什么叫函数?
  • Python学习之路13-记分
  • Ruby 2.x 源代码分析:扩展 概述
  • RxJS: 简单入门
  • 发布国内首个无服务器容器服务,运维效率从未如此高效
  • 排序(1):冒泡排序
  • 普通函数和构造函数的区别
  • 前端攻城师
  • 如何借助 NoSQL 提高 JPA 应用性能
  • 使用parted解决大于2T的磁盘分区
  • 一起参Ember.js讨论、问答社区。
  • 原生Ajax
  • 曜石科技宣布获得千万级天使轮投资,全方面布局电竞产业链 ...
  • ​VRRP 虚拟路由冗余协议(华为)
  • $(document).ready(function(){}), $().ready(function(){})和$(function(){})三者区别
  • %3cli%3e连接html页面,html+canvas实现屏幕截取
  • (二开)Flink 修改源码拓展 SQL 语法
  • (十二)springboot实战——SSE服务推送事件案例实现
  • (转)AS3正则:元子符,元序列,标志,数量表达符
  • (转)负载均衡,回话保持,cookie
  • .md即markdown文件的基本常用编写语法
  • .NET CORE 2.0发布后没有 VIEWS视图页面文件
  • .NET Core中Emit的使用
  • .NET 简介:跨平台、开源、高性能的开发平台
  • .NET 将多个程序集合并成单一程序集的 4+3 种方法
  • .NET/C# 解压 Zip 文件时出现异常:System.IO.InvalidDataException: 找不到中央目录结尾记录。
  • .netcore 如何获取系统中所有session_如何把百度推广中获取的线索(基木鱼,电话,百度商桥等)同步到企业微信或者企业CRM等企业营销系统中...
  • .Net面试题4
  • .NET牛人应该知道些什么(2):中级.NET开发人员
  • .Net中ListT 泛型转成DataTable、DataSet
  • .NET中两种OCR方式对比
  • /etc/skel 目录作用
  • ?php echo ?,?php echo Hello world!;?
  • [BZOJ 1032][JSOI2007]祖码Zuma(区间Dp)
  • [C++]高精度 bign (重载运算符版本)