求写一个java程序,有关于递归

有一个数学规则。如果一个数的和能被3整除。则这个数能被3整除。例如,126能被3整除吗?1+2+6=9。因为9能被3整除,所以126也可以。49867285022465能被3整除吗?这个数字,各位的和是69。69能被3整除吗?6+9=15。15能被3整除吗?1+5=6。6能被3整除吗?是的,结果是2,因为已经小于3了。所以不继续了。实现这个递归算法,并提供必要的JUnit测试以确保正确性。附一张原题图片。求大佬帮忙,谢谢。

第1个回答  2018-06-11
package test;

import java.util.Arrays;
import java.util.List;

/**
 * 被三整除验证器
 *
 * @author Administrator
 */
public class MultipleThreeValidator {
    public static boolean multipleByThree(String number) {
        List<String> multipleBase = Arrays.asList(new String[]{"0", "3", "6", "9"});
        if (number.length() == 1) {
            if (multipleBase.contains(number)) {
                return true;
            } else {
                return false;
            }
        } else {
            int sum = 0;
            for (char ch : number.toCharArray()) {
                sum += (ch-48);
            }
            return multipleByThree(String.valueOf(sum));
        }
    }

    public static boolean multipleByThree(Long number) {
        return multipleByThree(String.valueOf(Math.abs(number)));
    }

    public static void main(String[] args){
        System.out.println(multipleByThree("361"));
        System.out.println(multipleByThree(361L));
        System.out.println(multipleByThree("360"));
        System.out.println(multipleByThree(360L));
    }
}

junit测试自己补充下吧

第2个回答  2018-06-11

相似回答