java 递归函数

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)+”头牛”); 

   } 

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

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/118660.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • Java设计模式之结构型:外观模式

    Java设计模式之结构型:外观模式

    2021年10月4日
    38
  • 显卡挖矿怎么安装_显卡挖矿教程

    显卡挖矿怎么安装_显卡挖矿教程一、制作操作系统镜像文件前准备1.下载win10操作系统镜像。下载地址:http://miner.tools/software/142.下载并安装软碟通。3.准备一个U盘。二、制作U盘操作系统镜像文件1.右键单击软碟通,以管理员身份运行:2.在软碟通中打开下载的操作系统镜像:3.插入U盘,点击“启动”下的“写入硬盘映像…”:4.硬盘驱动器选择刚插入的U盘,点格式化:5.在格式化窗口,文件系统选NT…

    2022年9月30日
    5
  • idea社区版创建web项目_不用框架写一个web项目

    idea社区版创建web项目_不用框架写一个web项目IDEA社区版搭建Tomcat服务器并创建web项目目标问题实现步骤目标拥有和专业版创建Web项目的目录结构IDEA社区版可以启动Tomcat服务器编写Servlet并访问成功问题IDEA社区版没有创建Web工程的选项IDEA社区版没有Tomcat插件实现步骤针对以上两个问题,分步解决问题一:IDEA社区版没有创建Web工程的选项创建普通的java项目,此处不再赘述构建web项目的目录结构在WEN-INF文件夹下新建web.xml<?xmlvers

    2022年9月22日
    4
  • 怎么在mac上录屏_录屏工具

    怎么在mac上录屏_录屏工具您可以为整个屏幕或屏幕上的选定部分录制视频。1、使用“截屏”工具栏要查看“截屏”工具栏,请同时按下以下三个按键:Shift、Command和5。您将看到用于录制整个屏幕、录制屏幕的选定部分或拍摄屏幕静态图像的屏幕控制项:录制整个屏幕点按屏幕控制项中的。指针会变为相机。 点按任意屏幕以开始录制屏幕,或点按屏幕控制项中的“录制”。 要停止录制,请点按菜单栏中的。或者,按下Command-Control-Esc(Escape)。 使用缩略图进行修剪、共享、存储或其他操作…

    2022年9月24日
    3
  • f stream_Streaming

    f stream_Streamingc++文件流基本用法
    C++学习笔记2010-05-2015:07:46阅读57评论0  字号:大中小 订阅
    c++的文件流处理其实很简单,前提是你能够理解它。文件流本质是利用了一个buffer中间层。有点类似标准输出和标准输入一样。
      c++IO的设计保证IO效率,同时又兼顾封装性和易用性。本文将会讲述c++文件流的用法。
      有错误和疏漏的地方,欢迎批评指证。
      需要包含的头文件:
      名字空间:std

    2026年1月23日
    3
  • Openssl Heartbleed

    Openssl Heartbleed近日闹的沸沸扬扬的Heartbleed漏洞,仿佛一下子再次将人们拉回了对网络安全的关注和担忧。这个问题就是由于服务器端没有对用户发过来的心跳包数据进行边界检查,服务端根据用户心跳包指定的数据长度来返回同样长度的数据。如果用户指定长度为100字节,而实际心跳数据的长度只有1字节,服务端还是会memcpy长度100字节的数据,这样就会把服务端内存中的数据返回给用户,可能会…

    2022年7月15日
    16

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号