一、递归练习
1.求5!
计算5的阶乘:
public static int sum(int i){
if(i==1){
return 1;
}
return i*sum(i-1);
}
public static void main2(String[] args) {
System.out.println(sum(5));
}
2.顺序打印每一位
例:
输入:123
输出:123
public static void print(int a){
if(a>9){
print(a/10);
}
System.out.print((a%10)+" ");
}
public static void main(String[] args) { //顺序打印数字
print(1564);
}
3.输入的数字每一项加起来
例:
输入:1234
输出:10
public static int add(int a){
if(a<=9){
return a%10;
}
return a%10+add(a/10);
}
public static void main(String[] args) {
System.out.println(add(5556));
}
4.斐波那契数列(递归)
输入:10
输出:55
public static int fibonacci(int a){
int i=1;
int j=1;
if(a==1||a==2){
return 1;
}
return fibonacci(a-1)+fibonacci(a-2);
}
public static void main(String[] args) {
System.out.println(fibonacci(10));
}
5.汉诺塔问题
/**
*
* @param n 盘子的个数
* @param pose1 起始位置
* @param pose2 中转位置
* @param pose3 目的地
*/
public static void hanoi(int n,char pose1,char pose2,char pose3){ //位移位置
if(n==1){
move(pose1,pose3);
}else{
hanoi(n-1,pose1,pose3,pose2);
move(pose1,pose3);
hanoi(n-1,pose2,pose1,pose3);
}
}
public static void move(char pose1,char pose2){ //位移
System.out.print(pose1+"->"+pose2+" ");
}
public static void main(String[] args) { //汉诺塔问题
hanoi(1,'A','B','C');
System.out.println();
hanoi(2,'A','B','C');
System.out.println();
hanoi(3,'A','B','C');
}
6.青蛙跳台阶
public class test {
/**
* 青蛙跳台阶(斐波那契数列)
*/
public static int frog(int n){
if(n==1||n==2){
return n;
}
return frog(n-1)+frog(n-2);
}
public static void main(String[] args) {
System.out.println(frog(5));
}