例题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;
}
}
运行截图如下