华为机试题【10】-求数字基root

来源:互联网 发布:cf免费卡枪带软件 编辑:程序博客网 时间:2024/06/04 22:30

题目描述:

求整数的Root:给定正整数,求每位数字之和;如果和不是一位数,则重复;
输入:输入任意一个或多个整数
输出:输出各位数字之和,直到和为个位数为止(输入异常,则返回-1),多行,每行对应一个输入数据的结果。

样例输入:

25
865

样例输出:

7
1

思路分析:

  • 首先求个位数相加,经典方法,求余相除
  • 要求各个位数的和是小于10,可以采用递归或者循环

代码:

import java.util.Scanner;public class Main {    static int[] num = {1,2,5,10,20,50,100};    public static void main(String[] args) {    Scanner scan = new Scanner(System.in);    while(scan.hasNext()){        int input = scan.nextInt();        if(input < 1){            System.out.println(-1);        }else{            System.out.println(getRoot(input));        }    }       }    public static int getRoot(int n){        int all = 0;        int a = 0;        while(n > 0){            a = n % 10;            n = n / 10;            all = all +a;        }        if(all >= 10){            return getRoot(all);        }        return all;    }}

我的微信二维码如下,欢迎交流讨论

这里写图片描述

欢迎关注《IT面试题汇总》微信订阅号。每天推送经典面试题和面试心得技巧,都是干货!

微信订阅号二维码如下:

这里写图片描述

2 1
原创粉丝点击