递归的经典题目总结

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了递归的经典题目总结相关的知识,希望对你有一定的参考价值。

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


递归的几个经典例子:

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);
}
}
}




以上是关于递归的经典题目总结的主要内容,如果未能解决你的问题,请参考以下文章

「经典题目回顾」贪心算法:买卖股票的最佳时机II

二叉树:总结篇!(需要掌握的二叉树技能都在这里了)

二叉树经典题之二叉树的非递归遍历

经典递归问题总结

经典递归问题总结

BootStrap有用代码片段(持续总结)