【Java】Java_19递归算法

1.递归算法

A方法调用B方法,我们很容易理解!递归就是:A方法调用A方法!就是自己调用自己,因此我们在设计递归算法时,一定要指明什么时候自己不调用自己。否则,就是个死循环!

1.1递归算法要点

递归是一种常见的解决问题的方法,即把问题逐渐简单化。递归的基本思想就是“自己调用自己”,一个使用递归技术的方法将会直接或者间接的调用自己。

利用递归可以用简单的程序来解决一些复杂的问题。比如:大多数排序使用的就是递归算法。

1.2递归结构

递归结构包括两个部分:

1.    定义递归头。解答:什么时候不调用自身方法。如果没有头,将陷入死循环。

2.    递归体。解答:什么时候需要调用自身方法。

2.代码示意

package com.oliver.test;
public class TestRecursion {
    static int a = 0;
    public static void test01(){
        a++;
        System.out.println("递归"+a+"次");
        if(a<=10){//递归头
            test01();
        }
        else{  //递归体
            System.out.println("递归结束!");
        }
    }

    public  static int test02(int n){
        //求阶乘!
        if(n==1){
            return 1;
        }
        else {
            return n*test02(n-1);
        }

    }
    public static void main(String[] args) {
        //调用test01
        test01();
        int value = test02(3);
        System.out.println("阶乘结果为:"+value);
    }
} 

3.打印结果

递归1次
递归2次
递归3次
递归4次
递归5次
递归6次
递归7次
递归8次
递归9次
递归10次
递归11次
递归结束!
阶乘结果为:6

时间: 2024-10-12 16:43:10

【Java】Java_19递归算法的相关文章

Java的递归算法

递归算法设计的基本思想是:对于一个复杂的问题,把原问题分解为若干个相对简单类同的子问题,继续下去直到子问题简单到可以直接求解,也就是说到了递推的出口,这样原问题就有递推得解. 关键要抓住的是: (1)递归出口 (2)地推逐步向出口逼近 样例: example: 求5的阶乘..          例如以下: Java代码 public class Test { static int multiply(int n){ if(n==1||n==0) return n; else return n*mu

Java经典递归算法

斐波那契数列 package com.luna.base; public class BirthRabbit { public static void main(String[] args) { int i = 1; for (i = 1; i <= 20; i++) { System.out.println("兔子第" + i + "个月的总数为:" + f(i)); } } public static int f(int x) { if (x == 1 |

【Java笔记】——有趣的递归算法

在Java学习开始就学习到了递归,以前经常听到递归,但是却没有真正的了解过递归.学习是不断的重复的,在最初的时候,自己所听说到的不了解的,以后肯定会学到.但是前期这个了解的阶段是不可少的,现在体会是越来越深了.这篇博客就简单介绍一下递归算法,首先介绍什么是递归,然后是递归算法的代码展示,最后呈现递归的结果. 什么是递归 定义 递归是自身调用的一种编程技巧,递归作为一种算法在程序设计语言中广泛应用. 优点 一个过程或函数在其定义或说明中有直接或间接调用自身的一种方法,它通常把一个大型复杂的问题层层

Java 递归算法

1.递归算法基本思路: Java递归算法是基于Java语言实现的递归算法.递归算法是一种直接或者间接调用自身函数或者方法的算法.递归算法实质是把问题分解成规模缩小的同类问题的子问题,然后递归调用方法表示问题的解.递归往往能给我们带来非常简洁非常直观的代码形式,从而使我们的编码大大简化,然而递归的思维确实跟我们的常规思维相逆的,通常都是从上而下的思维问题,而递归趋势从下往上的进行思维. 2.递归算法解决问题的特点: 递归就是方法里调用自身 在使用递归策略时,必须有一个明确的递归结束条件,称为递归出

java语言之方法的使用与递归算法

1. 什么是方法(函数) java语言的方法类似于其他语言的函数,是一段来完成特定功能的代码片段, 2. 掌握方法的声明  声明格式:修饰符  返回值类型 方法名 (参数列表){  程序代码: return 返回值就: } 方法中的参数: 形式参数:在方法被调用时用于接收外界输入的数据. 实际参数:调用方法时实际传给方法的数据. 方法中的返回值(返回值类型:方法要返回的结果的数据类型,如一个方法没有返回值,必须给出返回值类型 void) (返回值:方法在执行完毕后返还给调用者的数据.) (ret

Java递归算法构造JSON树形结构

1.前言 最近项目中有一个需求,数据库中的菜单表是一个常见的id-pid结构,需要把它构建成树形的JSON格式发送给第三方,写出来之后感觉也是很简单的,核心代码只有5行,重要的是思路要明确,这里把源码分享给大家. 工程里面使用了json-lib.jar这个包,作用是将List序列化成JSON. 2.源码 package com.agileai.esb.smc.domain; import java.util.*; import net.sf.json.JSONArray; public clas

Java基础入门五)之方法以及递归算法

一.方法        1.1 什么是方法            java中的方法类似于其他语言中的函数 是一段用来完成特定功能的代码片段        1.2 为什么要声明方法            DRY Don't Repeat Yourself(不要写重复的代码)            原则 把能重复使用的逻辑抽取出来            不写重复的代码可以节省时间 提高效率 降低代码的出错几率 方便程序的测试和扩充            实现相对独立的逻辑            实现

简述java递归与非递归算法,0-100求和,斐波那契数列,八皇后,汉诺塔问题

一:什么是递归算法? 递归算法就是直接或者间接的调用自己的方法,在达到一个条件的时候停止调用(递归出口),所以一定要找准好条件,让递归停止,否则就会是无限进行下去 二:递归程序设计的关键 1:找出调用中所需要的参数 2:返回的结果 3:递归调用结束的条件 三:递归程序注意 1:要有方法中自己调用自己 2:要有分支结构 3:要有结束的条件 四:简单叙述递归函数的优缺点 优点: 1:简洁清晰,实现容易,可读性好 2:在遍历的算法中,递归比循环更为简单 缺点: 1:效率低,使用递归函数是有空间和时间的

java基础学习总结五(递归算法、冒泡排序)

一:递归算法 概念:自己调用自己的方法 示例代码如下: 1 @Test 2 /** 3 * 递归求和 4 * 5+4+3+2+1=15 5 */ 6 public void getSum() { 7 long sum = sum(5); 8 System.out.println("sum=" + sum); 9 } 10 11 public static long sum(int i) { 12 if (1 == i) { 13 return 1; 14 } else { 15 ret