java递归简单代码 Java中的递归

Java用递归写一个简单程式

import java.util.Scanner;

创新互联基于分布式IDC数据中心构建的平台为众多户提供绵阳电信机房机柜租用 四川大带宽租用 成都机柜租用 成都服务器租用。

class Example

{

/*递归方法*/

public long square(int n)

{

if (0 == n)//递归的出口

{

return 0;

}

else

{

return square(n-1) + 2*n - 1;

}

}

/*输入数据n的方法*/

public int scan()

{

int number = 0;

Scanner scan = null;

while(true)

{

System.out.print("请输入 n 的值:");

try{

scan = new Scanner(System.in);

number = scan.nextInt();

break;

}catch(Exception e)

{

System.out.println("你输入的数据n 错误!");

System.out.println("请重新输入...");

}

}

return number;

}

public boolean isContinue ()

{

String src = null;

Scanner scan = null;

while(true){

System.out.print("是否还需要继续计算?y(yes)/n(no) : ");

scan = new Scanner(System.in);

src = scan.nextLine();

if(src.equalsIgnoreCase("y") || src.equalsIgnoreCase("yes"))

{

return true;

}

else if(src.equalsIgnoreCase("n") || src.equalsIgnoreCase("no"))

{

return false;

}

}

}

public static void main(String[] args)

{

int number = 0;

Example exam = null;

do{

exam = new Example();

number = exam.scan();

long result = exam.square(number);

System.out.println("square(" + number + ") = " + result);

}while(exam.isContinue());

}

}

求一个java递归例子

这个很好写的,代码如下:

private ListDept recursionDept(ListDept ld){

for(int i=0; ild.size(); i++) {

Dept d = ld.get(i)

loop(d);

}

}

private void loop(Dept d) {

ListDept children=service.getChildDept(d.id);

if (children.size() 0) {

d.setChildren(children); // 这里假设子列表属性的名字就是children

for(int j=0; jchidren.size(); j++){

loop(children.get(j);

}

}

}

这个题目对初学者来说比较难的一点是,得想明白要自己建一个递归方法(loop)

java递归算法的例子。

阶乘:

要求:给定一个数值,计算出它的阶乘值,例如5的阶乘为5*4*3*2*1

实现:

[html] view plaincopy

span style="font-size:12px;"  // 利用递归实现一个数的阶乘值      private static BigDecimal getNum(BigDecimal inNum) {          if (inNum.compareTo(BigDecimal.ONE) == 0) {              return inNum;          }          return inNum.multiply(getNum(inNum.subtract(BigDecimal.ONE)));      }/span

(2)Fibonacci数列:1,1,2,3,5,8,13……

要求:找出数列中指定index位置的数值

实现:

[html] view plaincopy

span style="font-size:12px;"  // 利用递归实现了Fibonacci数列      private static int fab(int index) {          if (index == 1 || index == 2) {              return 1;          } else {              return fab(index - 1) + fab(index - 2);          }      }/span

(3)汉诺塔

要求:汉诺塔挪动

实现:

[html] view plaincopy

span style="font-size:12px;"  span style="white-space:pre;" /spanprivate static final String DISK_B = "diskB";    span style="white-space:pre;"   /spanprivate static final String DISK_C = "diskC";    span style="white-space:pre;"   /spanprivate static final String DISK_A = "diskA";    span style="white-space:pre;"   /spanstatic String from=DISK_A;  span style="white-space:pre;" /span  static String to=DISK_C;  span style="white-space:pre;" /span  static String mid=DISK_B;    span style="white-space:pre;" /span  public static void main(String[] args) {  span style="white-space:pre;" /span      String input=JOptionPane.showInputDialog("please input the number of the disks you want me move.");  span style="white-space:pre;" /span      int num=Integer.parseInt(input);  span style="white-space:pre;" /span      move(num,from,mid,to);  span style="white-space:pre;" /span  }/span

[html] view plaincopy

span style="font-size:12px;"  // 利用递归实现汉诺塔      private static void move(int num, String from2, String mid2, String to2) {          if (num == 1) {              System.out.println("move disk 1 from " + from2 + " to " + to2);          } else {              move(num - 1, from2, to2, mid2);              System.out.println("move disk " + num + " from " + from2 + " to " + to2);              move(num - 1, mid2, from2, to2);          }      }/span

(4)排列组合

要求:将输入的一个字符串中的所有元素进行排序并输出,例如:你给出的参数是"abc",

则程序会输出

abc

acb

bac

bca

cab

cba

实现:

[html] view plaincopy

span style="font-size:12px;"span style="white-space:pre;"   /spanpublic static void permute(String str) {   span style="white-space:pre;"    /span   char[] strArray = str.toCharArray();    span style="white-space:pre;"   /span permute(strArray, 0, strArray.length - 1);  span style="white-space:pre;" /span}/span

[html] view plaincopy

span style="font-size:12px;"  // 利用递归实现,将输入的一个字符串中的所有元素进行排序并输出      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];

java递归查询子节点,按给的示例代码实现

代码如下:

import java.util.ArrayList;

import java.util.List;

class Org {

private String id;

private String name;

private String pid;

public Org(String id, String name, String pid) {

this.id = id;

this.name = name;

this.pid = pid;

}

public String getId() {

return id;

}

public void setId(String id) {

this.id = id;

}

public String getName() {

return name;

}

public void setName(String name) {

this.name = name;

}

public String getPid() {

return pid;

}

public void setPid(String pid) {

this.pid = pid;

}

@Override

public String toString() {

return "Org [id=" + id + ", name=" + name + ", pid=" + pid + "]";

}

}

public class App {

static void find(ListOrg list, String pid) {

list.stream().filter(p - p.getPid().equals(pid))

.forEach(org - {

System.out.println(org);

find(list, org.getId());

});

}

public static void main(String[] args) {

ListOrg list = new ArrayList();

list.add(new Org("111", "公司", "0"));

list.add(new Org("222", "部门", "111"));

list.add(new Org("333", "小组", "222"));

list.add(new Org("444", "员工1", "333"));

list.add(new Org("555", "员工2", "333"));

find(list, "0");

System.out.println("------------------------------------");

find(list, "111");

}

}

运行结果:

一段JAVA的递归代码

下面递归写了一段递归累加到100,每加20个就换行输出。

package zhidao;

public class Digui {

public static int add(int num){

int sum = 0;

StringBuffer sb = new StringBuffer();

if (num = 0) {

return 0;

}else{

if (num == 1) {

sum = sum+1;

}else {

sum = add(num-1)+num;

}

if (num % 20 == 0) {

System.out.println("[index = "+num+" sum = "+sum+"]");

}else {

System.out.print("[index = "+num+" sum = "+sum+"],");

}

}

return sum;

}

public static void main(String[] args) {

add(100);

}

}


文章标题:java递归简单代码 Java中的递归
URL标题:http://myzitong.com/article/doojjhi.html