题目
给你一个数,让他进行巴啦啦能量,沙鲁沙鲁,小魔仙大变身,如果进行变身的数不满足条件的话,就继续让他变身。。。直到满足条件为止。
巴啦啦能量,沙鲁沙鲁,小魔仙大变身:对于一个数,把他所有位上的数字进行加和,得到新的数。
如果这个数字是个位数的话,那么他就满足条件。

输入描述:

给一个整数数字n(1<=n<=1e9)。

输出描述:

输出由n经过操作满足条件的数fa
简单的递归,找到递归重复部分:前一位与后一位相加即可。以此循环往复


方法一:while循环

分析一:

简单的递归,找到递归重复部分:前一位与后一位相加即可。以此循环往复
可用 
          sum += n % 10;
          n /= 10;
作为递推式。

附加判断条件:sum计算之后是否大于10,若大于则返回次循环部分继续计算。

AC代码一:

import java.util.Scanner;

public class Main{
  
    public static void main(String[] args){
        Scanner scan = new Scanner(System.in);
        int n = scan.nextInt();
        int res = 0;
        while(true){
            int sum = 0;
            while(n > 0){
                sum += n % 10;
                 n /= 10;
            }
             res = sum ;
            if(res < 10) break;
            n = res;
        }
        System.out.println(res);
    }
}

方法二:经典递归

分析二:

经典递归格式

AC代码二

import java.util.Scanner;

public class Main{
  static int getSum(int n){
      if(n < 10)   return n;
      else{
          int sum = 0;
          while(n != 0){
              
              sum += n % 10;
              n /= 10;
                         }
          return getSum(sum);
          }    
  }
    public static void main(String[] args){
        Scanner scan = new Scanner(System.in);
        int n = scan.nextInt();
       System.out.println(getSum(n));
    }
}

方法三:转化成字符串方法

分析三:

将整数n转化成一个字符串,利用charAt()方法,将每一位的数字都加起来,然后循环往复判断加和之后的结果是不是小于10(递归重复部分)。

AC代码三:

import java.util.Scanner;

public class Main{
  static int getSum(int n){
      if(n < 10)   return n;                           //递归出口
      else{
          int sum = 0;
          String s = n + "";                        //将整数n转化成立字符串
          for(int i = 0; i < s.length(); i++){
              sum += s.charAt(i) - '0';          //因为s是String型,用charAt读取出每一位的数,用for循环实现累加
          }                        //注意此时都要用Assci码计算,所以减去一个'0'
          return getSum(sum);                           //实现递归
          }          
          }    
    
    public static void main(String[] args){
        Scanner scan = new Scanner(System.in);
        int n = scan.nextInt();
       System.out.println(getSum(n));
    }
}