码迷,mamicode.com
首页 > 其他好文 > 详细

递归的经典题目总结

时间:2017-06-23 10:20:21      阅读:144      评论:0      收藏:0      [点我收藏+]

标签:java   递归   

注意:构造方法不可递归,否则是无限创建对象;


递归的几个经典例子:

1.HannoiTower 

import java.util.Scanner;
public class HanoiTower{
//level代表盘子个数;三个char类型代表柱子
public static void moveDish(int level, char from, char inter, char to){
if(level == 1){
System.out.println("从"+from+"移动盘子1号到"+to);
}else{
moveDish(level-1,from,to,inter);//调用自身
System.out.println("从"+from+"移动盘子"+level+"号到"+to);
moveDish(level-1,inter,from,to);
}
}
public static void main(String[] args){
Scanner sc = new Scanner(System.in);
System.out.println("请输入盘子个数");
int n = sc.nextInt();
moveDish(n,‘a‘,‘b‘,‘c‘);
}
}

2.sum 

import java.util.Scanner;
public class Sum{
public static void main(String[] args){
Scanner sc = new Scanner(System.in);
System.out.println("请输入n:");
int n = sc.nextInt();
int sum1 = sum(n);
System.out.println(sum1;
}
public static int sum(int n){
if(n == 1){
return 1;
}else{
return n+sum(n-1);
}
}
}


3.factorial 

import java.util.Scanner;
public class Factorial{
public static void main(String[] args){
Scanner sc = new Scanner(System.in);
System.out.println("请输入一个小于20的整数,我会帮你求出它的阶乘:");
int n = sc.nextInt();
int fac1 = fac(n);
System.out.println(n+"的阶乘为:"+fac1);
System.out.println("~看我棒不棒~~");
}
public static int fac(int n){
if(n == 1){B
return 1;
}else{
return n*fac(n-1);
}
}
}


4.sumFactorial 

import java.util.Scanner;
public class SumFactorial{
public static void main(String[] args){
Scanner sc = new Scanner(System.in);
System.out.println("请输入一个小于20的整数:");
int n = sc.nextInt();
int sf = sumFac(n);
System.out.println(sf);
}
//阶乘和的累加
public static int sumFac(int n){
if(n == 1){
return 1;
}else{
return fac(n)+sumFac(n-1);
}
}
//求阶乘
public static int fac(int n){
if(n == 1){
return 1;
}else{
return n*fac(n-1);
}
}
}


5.使用递归,遍历 1 至100之间的每个数字

public class Number{
public static void main(String[] args){
iterator(100);
}
public static void iterator(int n){
if(n >= 1){
System.out.print(n+"\t");
n--;
iterator(n);
}
}
}




递归的经典题目总结

标签:java   递归   

原文地址:http://huguangqin2015.blog.51cto.com/10856722/1940996

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!