目录
3、小青蛙跳台阶(一次只可以跳1或2个台阶)求小青蛙跳上n个台阶总共有多少种跳法
1、用递归实现1+2+3+……+10【开胃菜】(下面越来越难哦)!!!
public class TestDemo{
public static int sumAdd(int n){//求1+2+3+...+n
if (n == 1) {
return 1;
}
int sum=n;
sum=sum+sumAdd(n-1);
return sum;
}
public static void main(String[] args){
System.out.println(sumAdd(10));
}
}
2、用递归求斐波那契数列
【斐波那契:前两项之和等于第三项以此类推】
例如:1,1,2,3,5……
public class TestDemo{
public static int fib(int n) {
if (n == 1 || n == 2) {
return 1;
} else {
return fib(n - 1) + fib(n - 2);
}
}
public static void main(String[] args) {
System.out.println(fib(10))
}
}
注:代码举例的是第十项斐波那契数
3、小青蛙跳台阶(一次只可以跳1或2个台阶)求小青蛙跳上n个台阶总共有多少种跳法
public class TestDemo{
public static int frogJump(int n){//青蛙跳台阶
if(n==1||n==2){
return n;
}else {
return frogJump(n-1)+frogJump(n-2);
}
}
public static void main(String[] args) {
System.out.println(frogJump(4));
}
}
注:代码举例的是四个台阶一共有多少种跳法
4、用递归法实现汉诺塔问题
public class TestDemo{
public static void move(char p1,char p2){
System.out.print(p1+"->"+p2+";");
}
/**
*
* @param n//代表汉诺塔盘子的个数
* @param p1//代表盘子的起始位置
* @param p2//代表盘子的中转位置
* @param p3//代表盘子的最终位置
*/
public static void han(int n,char p1,char p2,char p3){
if (n == 1) {
move(p1,p3);
}else {
han(n-1,p1,p3,p2);
move(p1,p3);
han(n-1,p2,p1,p3);
}
}
public static void main(String[] args) {
han(1,'A','B','C');
System.out.println();
han(2,'A','B','C');
System.out.println();
han(3,'A','B','C');
System.out.println();
}
}