之前用C语言写过一次水花仙数,那个较于简单易懂,但是实战不强,代码过于繁琐。
这次在练习Java的方法递归中再写这道题,其做法大致相同。
首先判断位数,其次进行各个位的位数分离,最后运用Math类里的pow函数实现相乘。
import java.lang.Math;
public class TestDemo {
public static void main(String[] args) {
judgeNum();
}
public static void judgeNum() {
int ret_count = 0;
int ret_num = 0;
int num = 0;
int sum = 0;
for(num = 1; num <= 100000; num ++) {
ret_count = numPart_count(num);
sum = (int)numPatr_pow(num, ret_count);
if(sum == num) {
System.out.print(" " + num);
}
}
}
public static int numPart_count(int num) {
int count = 0;
while(num != 0) {
num = num / 10;
count ++;
}
return count;
}
public static int numPatr(int num) {
return num % 10;
}
public static double numPatr_pow(int num, int ret_count) {
if(num == 0) {
return 0;
}else {
return Math.pow(numPatr(num), ret_count) + numPatr_pow(num / 10, ret_count);
}
}
}