什么是递归,用Java怎么实现?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了什么是递归,用Java怎么实现?相关的知识,希望对你有一定的参考价值。

参考技术A 递归是函数调用自身,从而形成循环重复执行的现象。简单的示例名称为a的函数调用自身,a() a() 。常见的用法比如处理树形结构数据,商品多级分类、多层级部门机构等 参考技术B 递归就是自身调用自身,通过下面函数可以实现1+...+n;
public static int calculate(int n)
if(i==1)
return 1;
else
return n+calculate(n-1);


简单说明什么是递归?什么情况会使用?并使用java实现一个简单的递归程序。

解答:

 

1)递归做为一种算法在程序设计语言中广泛应用.是指函数/过程/子程序在运行过程中直接或间接调用自身而产生的重入现象。

 

2)递归算法一般用于解决三类问题:

 

a.数据的定义是按递归定义的。(Fibonacci(斐波那契)函数)

 

b.问题解法按递归算法实现。(回溯)

 

c.数据的结构形式是按递归定义的。(树的遍历,图的搜索)

 

3).这是一个排列的例子,它所做的工作是将输入的一个字符串中的所有元素进行排序并输出,例如:你给出的参数是”abc” 则程序会输出: abc acb bac bca cab cba a.算法的出口在于:low=high也就是现在给出的排列元素只有一个时。 b.算法的逼近过程:先确定排列的第一位元素,也就是循环中i所代表的元素, 然后low+1开始减少排列元素,如此下去,直到low=high public class Foo {

 

public static void main(String[] args) {

 

permute(“abc”);

 

}

 

public static void permute(String str) {

 

char[] strArray = str.toCharArray();

 

permute(strArray, 0, strArray.length – 1);

 

}

 

public static void permute(char[] list, int low, int high) {

 

int i;

 

if (low == high) {

 

String cout = “”;

 

for (i = 0; i <= high; i++)

 

cout += list[i];

 

System.out.println(cout);

 

} else {

 

for (i = low; i <= high; i++) {

 

char temp = list[low];

 

list[low] = list[i];

 

list[i] = temp;

 

permute(list, low + 1, high);

 

temp = list[low];

 

list[low] = list[i];

 

list[i] = temp;

 

}

 

}

 

}

 

}

以上是关于什么是递归,用Java怎么实现?的主要内容,如果未能解决你的问题,请参考以下文章

什么是递归?怎么用它来实现斐波那契数列?

Java调用wsdl,怎么实现

Feign实现RPC调用

想用java实现一个无限级树型菜单,数据库是这样设计的:id,pid(父id),name.用递归调用,要一次性加载.

java使用递归实现树形结构

java中树形结构怎么实现