黑马程序员技术交流社区

标题: 小疑问!请大神解答一下 [打印本页]

作者: IT人    时间: 2013-12-26 14:58
标题: 小疑问!请大神解答一下
public static void main(String[] args) {
                // TODO Auto-generated method stub
                    char[] chs = new char[]{'a','b','c'};
                    Stack<Character> stack = new Stack<Character>();  
                for(int i = 1; i <= chs.length; i++){  
                    combine(chs, 0, i, stack);  
疑问就是在打印出【a】【b】【c】后.  然后在 forc循环中i=2的时候往函数combine传递参数的时候
打印出begin=1
1
[a, b]2
2
到这里了为什么begin=1和number=1而不是
begin=0和number=2???????????????????????????
begin1=1v1
1
begin=2
                }
        }
                public static void combine(char []chs, int begin, int number, Stack<Character> stack){  
                        System.out.println(1);
                        if(number == 1){
                                System.out.println("begin="+begin);
                        }
                        if(number == 2){
                                System.out.println("begin3333="+begin);
                        }
                        if(number == 0){  
                     System.out.println(stack.toString()+begin);  
                     return ;  
                    }  
                    if(begin == chs.length){  
                     return;  
                    }  
                    stack.push(chs[begin]);  
                    combine(chs, begin + 1, number - 1, stack);
                    System.out.println(2);
                    System.out.println("begin1="+begin+"v"+number);
                   
                    stack.pop();  
                    combine(chs, begin + 1, number, stack);  
             }  

作者: 薛淑凯    时间: 2013-12-26 23:56
不明白楼主这个程序想干嘛,这么多迭代跟输出语句太不容易阅读了.  对于stack只要知道 先进后出 就行了,android里Activity就是这种机制
作者: IT人    时间: 2013-12-27 10:35
我也是在玩网上看见的一个程序,这个程序运算结果就是打印出来一个字符串的组合例如:"abc"
a   b  c  ab   ac   bc   abc但是运算到上边我说的那一步!我有点不明白!为什么begin和number
的值变化!就是for循环,然后i = 2时候。
作者: IT人    时间: 2013-12-28 19:22
还有大神给我解答一下么




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2