7-2.递归思想代码练习题

文章讲述了如何使用Java编程语言通过递归实现两个例题:按顺序打印1234的每位数字和计算1234各位数字之和,强调了递推公式和逆向思维在解决问题中的应用。
摘要由CSDN通过智能技术生成

例题1.按顺序打印一个数据的每一位 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

递推公式:%10 /10
初始条件:1-9之间的数直接打印(n<10)
n>10 进行递推公式,%10 /10
需要逆向思维,先进行/10,在%10

具体思想如下:
在这里插入图片描述
代码如下

// 数1234 按顺序输出每位数1 2 3 4
public class Test{
    public static void main(String[] args) {
        fun(1234);
    }
    public static void fun(int n) {
        if (n<10){
            System.out.println(n);
            return;//作用是跳出自己调用自己的循环(是终止条件)
        }
        fun(n/10);//该步骤相当于一个循环 运行到该步骤就从该方法中的第一条开始执行 if语句
        //1234 123 12 1,当n=1时跳出自调用,执行fun()后面语句
        //归的思想是逆着进行的 从12 123 1234进行(每次运行都是接着上一次运行一半的程序继续执行)
        int rt=n%10;//return后运行该行代码
        System.out.println(rt);
    }
}




例题2:将1234各个位相加 得到结果10

// 数1234 求每位数字之和1+2+3+4=10
public class Test{
    public static void main(String[] args) {
        System.out.println(fun(1234));
    }
    public static int fun(int n) {
        if (n<10){
            return n;
        }
        int sum=0;
        sum=n%10+fun(n/10);  //4+1234/10 123  123%10+123/10  12%10+12/10  1+2+3+4

        return sum;
    }
}

运行截图如下
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值