Java完成1~100000之间的水花仙数的输出(练习递归)

28 篇文章 0 订阅

之前用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);
 		}
 	}
 }

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值