A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 执剑人 中级黑马   /  2016-3-8 08:38  /  1367 人查看  /  4 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

public static void getn(int b){
                int i;
                ArrayList<Integer> list = new ArrayList<Integer>();
                for(i = 2 ; i <= b; i ++){
                        if(( b % i ) == 0 && b != i){
                                list.add(i);
                                getn(b / i);
                                break;
                        }else if(b == i){
                                list.add(b);
                        }
                }
               
                for (Integer in : list) {
                        System.out.println(in);
                       
                }
代码如上,能就是打印的时候我想能打印成这样的,例如
90=2*3*3*5
哪位大神重写一下打印的代码?

4 个回复

正序浏览
这种是用List的,我输出接口不会,所以用的for循环。。。。。楼主参考一下
public static void test(int b) {
                ArrayList<Integer> list = new ArrayList<Integer>();
                getn(b, list);
                for (int i = 0; i < list.size(); i++) {
                        if (i == 0) {
                                System.out.print(b + "=" + list.get(i));
                        } else {
                                System.out.print("*" + list.get(i));
                        }
                }
        }
        public static void getn(int b, ArrayList<Integer> list) {
                for (int i = 2; i <= b; i++) {
                        if ((b % i) == 0 && b != i) {
                                list.add(i);
                                getn(b / i, list);
                                break;
                        } else if (b == i) {
                                list.add(b);
                        }
                }

        }
回复 使用道具 举报
超人d咖啡也加糖 发表于 2016-3-8 15:05
没有用List,楼主这样用List,每次都是存进去一个数字就输出(递归的时候局部变量会消失的吧),那用List没 ...

代码第二行的90改成b。。。。。。
回复 使用道具 举报
没有用List,楼主这样用List,每次都是存进去一个数字就输出(递归的时候局部变量会消失的吧),那用List没有意义啊。。。。
public static void test(int b) {
                System.out.print(90 + "=");
                getn(b);
        }

        public static void getn(int b) {
                int i;
                for (i = 2; i <= b; i++) {
                        if ((b % i) == 0 && b != i) {
                                System.out.print(i + "*");
                                getn(b / i);
                                break;
                        } else if (b == i) {
                                System.out.print(i);
                        }
                }

        }
回复 使用道具 举报
public static void test(int b) {
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马