首页 > 代码库 > 递归的经典题目总结
递归的经典题目总结
注意:构造方法不可递归,否则是无限创建对象;
递归的几个经典例子:
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); } } }
递归的经典题目总结
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。