递归算法

来源:互联网 发布:淘宝店铺首页全屏轮播 编辑:程序博客网 时间:2024/06/07 15:39

人家都说,实现相同的功能,用的方法不同,可以看出不同人的思维逻辑的能力微笑,有句话说高手是用递归做算法的,菜鸟是用循环做算法的,然而今天我将他们两者结合起来做了尴尬


题目:打印出所有的"水仙花数(narcissus number)",所谓"水仙花数"是指一个三位数,
其各位数字立方和等于该数本身。例如:153是一个"水仙花数",因为153=1的三次方+5的三次方+3的三次方。 
1.程序分析:利用for循环控制100-999个数,每个数分解出个位,十位,百位。 


这道题就是传说中的水仙花的算法,相信很多人都做过的,我在这里也总结一下自己的写法:

public class ThirdNarcissusNum {

static int b,bb,bbb;  //定义三个参数

public static void main(String[] args) {
//用循环+递归
for (int i = 100; i <999; i++) {
ThirdNarcissusNum tn=new ThirdNarcissusNum();
tn.chang(i);
}

}


public void chang(int m){
//进行数学逻辑判断
bbb=m/100;
bb=(m%100)/10;
b=(m%100)%10;
if (bbb*bbb*bbb+bb*bb*bb+b*b*b==m) {
System.out.println(m+"是水仙花数");
}

}
}

实现的方式应该是多种多样的,不同的方法实现相同的结果,对于思维锻炼是有帮助的再见


1 0