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

   } 

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

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

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

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)


相关推荐

  • Flash cookie — 本地共享对象(LOCAL SHARED OBJECTS)

    Flash cookie — 本地共享对象(LOCAL SHARED OBJECTS)写道本地共享对象(有时也称为“Flashcookie”)是一些可由您访问的站点在您的计算机上创建的数据文件。共享对象大多数情况下用来增强您浏览Web的体验。网站可以在您的计算机上编写cookie,当您下次访问该网站时,它将加载该cookie及其信息,从而使您拥有一种更加个性化的体验。例如,您可能让站点记住您的登录名。该信息存储在cookie中,并在您下次访问时被检索…

  • Handler和HandlerThread

    Handler和HandlerThread

  • 学生选修课管理系统课程设计_学生选修课程系统设计报告

    学生选修课管理系统课程设计_学生选修课程系统设计报告一、课程设计任务完成学生选课管理系统的开发二、需求描述本系统是一个单机版的小型的学生选课管理系统,在本系统中,开发了一个面向管理员、学生和教师这三个对象的教务平台,对学生提供的服务有登录、选课、、修改登录密码、和查询成绩这几个服务,所选课程总数不能超过3门;对教师提供的服务有登录、修改登录密码和登录成绩;对管理员提供的服务有登录开设学生和教师帐号、删除学生和教师帐号的服务。三、系统总体设计1.系统架构设计(1)架构:单机(2)运行软件环境:windowsXPSP3、jdk

    2022年10月10日
  • Pytest(13)命令行参数–tb的使用

    Pytest(13)命令行参数–tb的使用前言pytest使用命令行执行用例的时候,有些用例执行失败的时候,屏幕上会出现一大堆的报错内容,不方便快速查看是哪些用例失败。–tb=style参数可以设置报错的时候回溯打印内容,可以设置参

  • 约定俗成的版本号命名规则是什么_2017版命名规则

    约定俗成的版本号命名规则是什么_2017版命名规则版本号的格式为`X.Y.Z[主版本号.次版本号.修订号]`,版本号递增规则如下:1.`主版本号`:一般当软件整体重写,或出现不向后兼容的改变时,`主版本号递增1,次版本清零,修订号清零`,如1.9.1->2.0.0。2.`次版本号`:一般功能更新或者增加功能时,`主版本号不变,次版本号递增1,修订号不变`。3.`修订号`:当Bug修复发布时,`主版号不变,次版本号不变,修订号递增1`。开发一个新项目时一般以`0.1.0`作为你的初始化开发版本,并在后续的每次发行时

  • 软件工程概论题库「建议收藏」

    一、选择题:1.开发软件所需高成本和产品的低质量之间有着尖锐的矛盾,这种现象称做(C)。A.软件工程 B.软件周期 C.软件危机 D.软件产生2.瀑布模型本质上是一种(A)模型。A.线性顺序B.顺序迭代C.线性迭代D.早期产品3.瀑布模型存在的问题是(B)。A.用户容易参与开发 B.缺乏灵活性C.用户与开发者易沟通D.适用可变需求4.螺旋模型是…

发表回复

您的电子邮箱地址不会被公开。

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