(java)递归实现n的阶乘,斐波那契列,按顺序打印数字,数字之和,汉诺塔问题,青蛙跳台阶问题。

1.递归求n的阶乘

import java.util.Scanner;
public class Test {
    public static void main(String[] args) {
        Scanner scanner=new Scanner(System.in);
        System.out.println("请输入一个数");
        int num=scanner.nextInt();
        int sum=func(num);
        System.out.println("sum ="+sum);
    }
    public static int func(int n){
        if (n==1){
            return 1;
        }
        return n*func(n-1);
    }

2.递归求1+2+3+4+5+…+n;

import java.util.Scanner;
public class Test1{
    public static int sum(int n){
        if (n==1){
            return 1;
        }
        return n+sum(n-1);
    }
    public static void main(String[] args) {
        Scanner scanner =new Scanner(System.in);
        System.out.println("请输入一个数");
        int num=scanner.nextInt();
        int ret=sum(num);
        System.out.println("ret="+ret);
    }
}

3.递归求,输入一个非负整数,返回组成它的数字之和。

import java.util.Scanner;
public class Test1{
    public static int func(int n){
        if (n<10){
            return n;
        }
        return n%10+func(n/10);
    }

    public static void main(String[] args) {
        Scanner scanner=new Scanner(System.in);
        int num=scanner.nextInt();
        int ret=func(num);
        System.out.println("ret="+ret);
    }
}

4.使用递归的方法按顺序打印出某一数字的每一位。

import java.util.Scanner;
public class Test1{
	public static void print(int num) { 
	 if (num > 9) { 
	 print(num / 10); 
	 } 
 	System.out.println(num % 10); 
	}
	public static void main(String[] args) {
        Scanner scanner=new Scanner(System.in);
        int num=scanner.nextInt();
        print(num);
}

5.递归求斐波那契数列的第n 项。

import java.util.Scanner;
public class Test1 {
    public static int fib(int n){
        if (n==1||n==2){
            return 1;
        }
        return fib(n-1)+fib(n-2);
    }

    public static void main(String[] args) {
        Scanner scanner=new Scanner(System.in);
        System.out.println("请输入一个数");
        int num=scanner.nextInt();
        int ret=fib(num);
        System.out.println("ret="+ret);
    }
}

6.用递归求汉诺塔问题。

public class Test{
    public void hanoi(int n, char A, char B, char C) {
        if (n == 1) {
            move(A, C);
        } else {
            hanoi(n - 1, A, C, B);//步骤1 按ACB数序执行N-1的汉诺塔移动
            move(A, C);             //步骤2   执行最大盘子移动
            hanoi(n - 1, B, A, C);//步骤3 按BAC数序执行N-1的汉诺塔移动
        }
    }

    private void move(char A, char C) {//执行最大盘子的从A-C的移动
        System.out.println("move:" + A + "--->" + C);
    }

    public static void main(String[] args) {
        Test hanoi = new Test();
        System.out.println("移动汉诺塔的步骤:");
        hanoi.hanoi(3, 'a', 'b', 'c');
    }
}

7.递归求青蛙跳台阶问题。(一只青蛙一次可以跳上 1 级台阶,也可以跳上2 级。求该青蛙跳上一个n级台阶有多少种跳法)

public class Test{
    public static int jump(int n){
        if (n<1){
            return 0;
        }
        if (n==1){
            return 1;
        }
        if (n==2){
            return 2;
        }
        return jump(n-1)+jump(n-2);
    }
    public static void main(String[] args) {
        Scanner scanner=new Scanner(System.in);
        System.out.println("请输入台阶数");
        int num=scanner.nextInt();
        int ret=jump(num);
        System.out.println("一共有"+ret+"种跳法");
    }
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值