Java 递归算法

1.递归算法基本思路:

  Java递归算法是基于Java语言实现的递归算法。递归算法是一种直接或者间接调用自身函数或者方法的算法。递归算法实质是把问题分解成规模缩小的同类问题的子问题,然后递归调用方法表示问题的解。递归往往能给我们带来非常简洁非常直观的代码形式,从而使我们的编码大大简化,然而递归的思维确实跟我们的常规思维相逆的,通常都是从上而下的思维问题,而递归趋势从下往上的进行思维。

2.递归算法解决问题的特点:

  • 递归就是方法里调用自身
  • 在使用递归策略时,必须有一个明确的递归结束条件,称为递归出口
  • 递归算法代码显得很简洁,但递归算法解题的运行效率较低。所以不提倡用递归设计程序。
  • 在递归调用的过程中系统为每一层的返回点、局部量等开辟了栈来存储。递归次数过多容易造成栈溢出等,所以一般不提倡用递归算法设计程序。

  在做递归算法的时候,一定把握出口,也就是做递归算法必须要有一个明确的递归结束条件。这一点是非常重要的。其实这个出口就是一个条件,当满足了这个条件的时候我们就不再递归了。

3.代码示例:


1

2

3

4

5

6

7

8

public class Factorial {

    //this is a recursive function

    int fact(int n){

        if (n==1return 1;

        return fact(n-1)*n;

    }

    

}


1

2

3

4

5

6

7

8

9

public class TestFactorial {

    public static void main(String[] args) {

        // TODO Auto-generated method stub

        Factorial factorial=new Factorial();

        System.out.println("factorial(5)="+factorial.fact(5));

    }

}

代码执行流程图如下:

此程序中n=5就是程序的出口。

时间: 2025-01-16 05:01:35

Java 递归算法的相关文章

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递归算法——三角数字

import java.io.BufferedReader; import java.io.IOException; import java.io.InputStream; import java.io.InputStreamReader; //================================================= // File Name : triangle_demo //----------------------------------------------

转: JAVA递归算法实例小结

一.递归算法设计的基本思想是: 对于一个复杂的问题,把原问题分解为若干个相对简单类同的子问题,继续下去直到子问题简单到能够直接求解,也就是说到了递推的出口,这样原问题就有递推得解. 在做递归算法的时候,一定要把握住出口,也就是做递归算法必须要有一个明确的递归结束条件.这一点是非常重要的.其实这个出口是非常好理解的,就是一个条件,当满足了这个条件的时候我们就不再递归了. 关键要抓住的是:(1)递归出口 (2)地推逐步向出口逼近 二.递归算法实例 (1)阶乘: 要求:给定一个数值,计算出它的阶乘值,

Java 递归算法,遍历文件夹下的所有文件。

用递归算法遍历文件下的所有子文件夹和子文件 文件夹遍历方法 public void getFileList(String strPath){ File f=new File(strPath); try { if(f.isDirectory()){ File[] fs=f.listFiles(); for(int i=0;i<fs.length;i++){ String fsPath=fs[i].getAbsolutePath(); System.out.printlen(fsPath); get

Java递归算法——阶乘

import java.io.BufferedReader; import java.io.IOException; import java.io.InputStream; import java.io.InputStreamReader; //================================================= // File Name : Factorial_demo //---------------------------------------------

JAVA递归算法

1.什么是递归算法         递归算法就是直接或间接调用自己的算法 2.递归思想        递归就是方法里调用自身        在使用递归策略时,必须有一个明确的递归结束条件,称为递归出口        递归算法代码显得很简洁,但递归算法解题的运行效率较低.所以不提倡用递归设计程序.        在递归调用的过程中系统为每一层的返回点.局部量等开辟了栈来存储.递归次数过多容易造成栈溢出等,所以一般不提倡用递归算法设计程序. 要点:        在做递归算法的时候,一定把握出口,也

[转]递归算法

原文地址:http://blog.csdn.net/wangjinyu501/article/details/8248492 一.基本概念 递归算法是一种直接或者间接调用自身函数或者方法的算法.Java递归算法是基于Java语言实现的递归算法.递归算法的实质是把问题分解成规模缩小的同类问题的子问题,然后递归调用方法来表示问题的解.递归算法对解决一大类问题很有效,它可以使算法简洁和易于理解.递归算法,其实说白了,就是程序的自身调用.它表现在一段程序中往往会遇到调用自身的那样一种coding策略,这

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笔记】——有趣的递归算法

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