青蛙跳台阶问题:假设有n个台阶,青蛙每次可以跳一次或者两次,跳上去有多少种方法
import java.util.Scanner;
public class Frog {
public static int frog(int i) {
if(i == 1) {
return 1;
} else if (i == 2){
return 2;
} else {
return frog(i-1)*frog(i-2);
}
}
public static void main(String[] args) {
Scanner scan = new Scanner(System.in);
System.out.println("请输入几阶台阶:");
int i = scan.nextInt();
int x = frog(i);
System.out.println("共有" + x +"种跳法");
}
}
有三个柱子:pos1,pos2,pos3.假设有n个盘子在pos1上,最终移到pos3上要做多少步。
import java.util.Scanner;
public class Hanoi {
public static void move(char m,char n) {
System.out.print(m + ">" + n + " ");
}
public static void hanoi(int i,char pos1,char pos2,char pos3) {
if(i == 1) {
move(pos1,pos3);
return;
}
hanoi(i-1,pos1,pos3,pos2);
move(pos1,pos3);
hanoi(i-1,pos2,pos1,pos3);
}
public static void main(String[] args) {
Scanner scan = new Scanner(System.in);
System.out.println("请输入汉诺塔上的圆盘数:");
int i = scan.nextInt();
hanoi(i,'A','B','C');
}
}
本文深入探讨了两个经典的递归算法问题——青蛙跳台阶和汉诺塔。青蛙跳台阶问题通过递归函数计算青蛙跳上n个台阶的不同方式数量,而汉诺塔问题则展示了如何通过递归将n个盘子从一个柱子移动到另一个柱子,同时遵循特定的规则。这两个问题不仅考验了算法思维,还提供了理解递归原理的良好案例。
1603

被折叠的 条评论
为什么被折叠?



