【JavaSE】-- 方法递归入门

☀️前言☀️

递归是一种重要的编程解决问题的方式,本篇文章我将给大家介绍一下Java递归的入门。

👦有缘,才相遇,你好!我是hgway_hxz

❤️热爱Java,希望结识更多的小伙伴一起交流

🎉欢迎大家:👍点赞 💬评论 ⭐收藏 💖关注

✉️如果有任何问题欢迎大家在评论区讨论或者私信我

✏️只要不把自我束缚在心灵的牢笼里,谁也束缚不了你去展翅高飞

1.递归的定义

一个方法在执行过程中调用自身就称为递归

我们要写递归,首先要存在限制条件,当满足这个限制条件的时候,递归便不再继续,每次递归都会接近这个限制条件,也就是需要我们找到递归的终止条件递归公式

  • 终止条件:递归不能无限递归执行下去,所以要有一个趋近于终止的条件

  • 递归公式:原问题可以拆为同类更容易解决的子问题,原问题拆分成其子问题之后,子问题与原问题有相同的解法

2.递归的练习

2.1递归求n的阶乘

解题思路

例如

5! =  5 * 4 * 3 * 2 * 1
   = 5 * 4!
   = 5 * 4 * 3!
   = 5 * 4 * 3 *2!
   = 5 * 4 * 3 * 2 * 1!

我们可以发现递归公式为n! = n * (n - 1)!,而1!= 1也就是终止条件

代码

public static int fac(int n) {
    if (n == 1) {
        return 1;
    }
    return n * fac(n- 1);
}

public static void main1(String[] args) {
    Scanner scanner = new Scanner(System.in);
    int n = scanner.nextInt();
    System.out.println(fac(n));
}

执行图
在这里插入图片描述

2.2 递归求 1 + 2 + 3 + … + 10

解题思路

10∑1,表示连续自然数1到10的和

10∑1 = 10 + 9∑1
     =  10 + 9 + 8∑1
     =  10 + 9 + 8 + 7∑1
     =  10 + 9 + 8 …… +  1

递推公式:n∑1 = n + n - 1∑1

终止条件: n等于1的时候,1∑1 = 1

代码

public static int sumAdd(int n) {
    if (n == 1) {
        return 1;
    }
    return n + sumAdd(n - 1);
}

public static void main(String[] args) {
    Scanner scanner = new Scanner(System.in);
    int n = scanner.nextInt();
    System.out.println(sumAdd(n));
}

2.3按顺序打印一个数字的每一位

解题思路

采用模十除十,例如 1234 打印出 1 2 3 4

				1234 % 10 = 4
1234 / 10 = 123
				123  % 10 = 3
123  / 10 = 12
				12   % 10 = 2
12   / 10 = 1
				1    % 10 = 1

如果n(1~9的数字)小于10的时候,n % 10 就会等于n本身,这就是终止条件

递推公式:n = n % 10 + printNum(n / 10)

终止条件:n < 10

代码

    public static void printNum(int n) {
        if (n < 10) {
            System.out.print(n + " ");
            ;
        } else {
            printNum(n / 10);
            System.out.print(n % 10 + " ");
        }
    }

    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        int n = scanner.nextInt();
        printNum(n);
    }

2.4输入一个非负整数,返回组成它的数字之和

解题思路

写一个递归方法,输入一个非负整数,返回组成它的数字之和. 例如,输入 1234, 则应该返回1 + 2 + 3 +4, 它的和是10

				1234 % 10 = 4
1234 / 10 = 123
				123  % 10 = 3
123  / 10 = 12
				12   % 10 = 2
12   / 10 = 1
				1    % 10 = 1

如果n(1~9的数字)小于10的时候,n % 10 就会等于n本身,这就是终止条件

递推公式:n % 10 + numAdd(n / 10)

终止条件:n < 10

代码

    public static int numAdd(int n) {
        if (n < 10) {
            return n;
        } else {
            return n % 10 + numAdd(n / 10);
        }
    }

    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        int n = scanner.nextInt();
        System.out.println(numAdd(n));
    }
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

那年盛夏繁如花

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值