JAVA中的方法递归

  • 递归的思路
  • 代码举例

一、递归的思路

一个方法在执行时,调用自身被称为“递归”。
递归相当于数学归纳法,有一个起始条件,有一个递推公式。
递归可以分为:单路递归和多路递归(如二叉树和斐波那契数列)。

二、代码举例

1、n的阶乘

 //n的阶乘public static int fac(int num){if(num == 1){return 1;}return num * fac(num-1);}public static void main(String[] args) {int n = 5;System.out.println("result = " + fac(n));}

运行结果

2、按照顺序打印一个数字的每一位

  //按照顺序打印一个数字的每一位public static void print(int n){if( n > 9 ){print( n / 10);}System.out.print( n % 10 );}public static void main(String[] args) {print(12345);}

运行结果
3、输入一个非负整数,返回组成他的数字之和,如输入1729,则返回1+7+2+9=19

public static int sum(int n){if(n < 10){return n;}return n %10 + sum( n/10 );}public static void main(String[] args) {int n = 525615;int ret = sum( n);System.out.println("the sum of "+n +" = "+ ret);}

运行结果

4、求斐波那契数列的第n项
斐波那契数列:1 1 2 3 5 8 13

 public static int fib(int n){if(n == 1 || n == 2){return 1;}return fib(n - 1) + fib(n - 2 );}public static void main(String[] args) {System.out.println(fib(10));}

运行结果
**注意:当n的值越来越大时,程序运行的速度很慢,原因是进行了大量的重复运算。所以对于斐波那契数列,一般采用迭代的代码版本。

public static int fib(int n){int n1 = 1;int n2 = 1;int num = 1;for( int i=3; i<=n ;i++){num = n1 + n2;n1 = n2;n2 = num;}return num;}public static void main(String[] args) {System.out.println(fib(10));}

运行结果

  • 需要注意的是,如果编译时出现以下错误,说明栈溢出,要仔细检查代码的终止条件是否没有写或者写错。

java中的方法递归相关推荐

  1. 使用java中replaceAll方法替换字符串中的反斜杠

    今天在项目中使用java中replaceAll方法将字符串中的反斜杠("\")替换成空字符串(""),结果出现如下的异常: 1 java.util.regex. ...

  2. java中collection方法_Java 8中的Collector toCollection()方法

    toCollection()Java中的Collector类的方法返回一个Collector,该Collector以遇到的顺序将输入元素累积到一个新的Collection中. 语法如下static & ...

  3. java 返回值判断_在Java中判断方法重载的条件除了参数外,还可以通过返回值类型判断。_学小易找答案...

    [单选题]若int x;且有下面的程序片断,则输出结果是() . for (x=3; x<6; x++) { printf((x%2) ? "##%d" : "** ...

  4. 《Android游戏开发详解》——第1章,第1.6节函数(在Java中称为“方法”更好)...

    本节书摘来自异步社区<Android游戏开发详解>一书中的第1章,第1.6节函数(在Java中称为"方法"更好),作者 [美]Jonathan S. Harbour,更 ...

  5. java中main方法前的public static void及其后面的(String[] args)【笔记自用】

    为什么Java的main方法必须是public static void? 一. void 如下,像C, C++一样,将返回值类型改为int,再返回一个0,虽然编译通过,但是运行时会报错. 找到一种可理 ...

  6. java中同步_在Java中的方法同步和语句同步(块同步) - Break易站

    Java 多线程 线程主要通过共享对字段的访问和参考字段引用的对象进行通信.这种通信形式非常有效,但可能出现两种错误:线程干扰和内存一致性错误.需要一些同步构造来防止这些错误.以下示例显示了我们需要同 ...

  7. JAVA中的方法和构造方法有什么区别

    JAVA中的方法和构造方法有什么区别 1.方法有返回类型,方法名小写,不能和类名相同:构造方法没有返回类型,void也不行,名与类名相同. 2.构造方法是初始化对象的重要途径,所以就算你给一个类没有定 ...

  8. java中的方法求和_在Java中模拟求和类型的巧妙解决方法

    java中的方法求和 在继续阅读实际文章之前,我想感谢令人敬畏的Javaslang库的作者Daniel Dietrich ,他在我面前有了这个主意: @lukaseder尝试使用静态方法<T,T ...

  9. Java中的方法(形参及实参)return返回类型

    如何定义 Java 中的方法 所谓方法,就是用来解决一类问题的代码的有序组合,是一个功能模块. 一般情况下,定义一个方法的语法是: 其中: 1. 访问修饰符:方法允许被访问的权限范围, 可以是 pub ...

最新文章

  1. c++ 暂停功能_app下载功能背后的逻辑
  2. System.Timers.Timer与System.Windows.Forms.Timer 区别
  3. 在ASP.NET MVC中进行排序
  4. 组态王中时间存access怎么存,组态王通过Access数据库起始截止日期查询方法
  5. Hyperledger Fabric 智能合约实战 (7) windows安装fabric
  6. 2022版全球及中国单晶硅市场规模分析与竞争策略研究报告
  7. 时间和空间复杂度概述【Java _demo版】
  8. python-循环语句基础知识
  9. 第三届(2016)科学数据大会——科学数据与创新发展征文通知
  10. 《算法:C语言实现》——连通性
  11. Leecode刷题热题HOT100导航目录
  12. hadoop 基础命令
  13. 【SpringBoot】解决拦截器注入 Service 为空问题
  14. escape()方法和unescape()方法
  15. 初学css常用属性整理
  16. SEO助手-免费万能SEO网站优化小助手
  17. css子元素和后代元素选择器
  18. 论文心得:BatchNorm及其变体
  19. 交规考试通过,庆祝一下
  20. Pr 入门教程如何创建动画开头标题?

热门文章

  1. 怎么分辨是808鼓_教你怎么简单快速有效的分辨音箱的好坏 (小白必读)
  2. 如何评估小红书投放效果?有哪些数据可以帮助监测效果
  3. 环境变量NLS_LANG
  4. 八、漏洞原理利用(4)SSRF 笔记和靶场
  5. Java之东拉西扯——杂谈篇(共五篇)
  6. android 图像对比,图像对比在UI自动化中的应用
  7. java中怎么下载图片不显示图片_关于Java/Kotlin下载图片,图片打开不能显示问题探究...
  8. NetSuite几个Amount的含义
  9. python干饭神器---今天吃什么?python告诉你
  10. 接触器自锁电路原理,识字就能懂!