计算数字根
问题
概述输入输出样例输入样例输出求解
分析设计编码结论问题 传送门:数字根
概述 通过对整数的数字求和来找到正整数的数字根。如果结果值是单个数字,则该数字是数字根。如果结果值包含两个或更多个数字,则将这些数字相加并重复该过程。只要需要获得一位数,就会继续这样做。
输入 输入文件将包含一个正整数列表,每行一个。输入的结尾将由整数值零表示。
输出 对于输入中的每个整数,在输出的单独行上输出其数字根。
样例输入 24 39 0
样例输出 6 3
求解
分析 循环加递归的方法,还要将2位及2位以上的数按位拆分
设计 循环调用递归函数,这里拆分数位没有用循环除法来做,而是借用了字符串的方法,先将数转化成字符串,然后再逐个取字符转换成单个数字来做处理。
编码
import java.util.Scanner; public class the_01 { public static void main(String[] args) { //计算数字根,对于未知个数,可以使用链表来做的,这里先用数组代替 Scanner sc=new Scanner(System.in); int[] num=new int[100]; int pos=0; while(true) { num[pos]=sc.nextInt(); if(num[pos]==0) break; pos++; } int i=0; while(num[i]!=0) { root(num[i]); i++; } } public static void root(int num) { if(num>0&&num<10) System.out.println(num); if(num>=10) { int n=0; String shu=String.valueOf(num); for(int i=0;i<shu.length();i++) n+=Integer.parseInt(""+shu.charAt(i)); if(n>=10) root(n); else System.out.println(n); } } }结论 简单题偷懒做,做题方法不唯一。