如图代码,为什么该方法没有返回值,但是又加了个范型<E>,这是求排列组合的递归方法,我也没明白为什么在data(copycats) remove完后,方法又继续执行了。求大神解答,不甚感激。

解决方案 »

  1.   

     remove完后,方法又继续执行了。这不是个for循环吗
      

  2.   

    首先,在方法前加上E代表这是个泛型方法,同时E在这个方法的作用域内代表一种类型。所以跟方法有没有返回值没有直接关系。方法继续执行是指什么?不太清楚,remove之后就是应该执行下一句的,不然递归怎么调用
      

  3.   

    可以看一下递归的数据传递。
    第一次
    data [a,b,c,d]
    target[]copydata[a,b,c,d]
    copytarget[]copydata[b,c,d]
    copytarget[a]第2次
    data[b,c,d]
    target[a]copydata[b,c,d]
    copytarget[a]copydata[c,d]
    copytarget[a,b]第3次
    data[c,d]
    target[a,b]copydata[c,d]
    copytarget[a,b]copydata[d]
    copytarget[a,b,c]第4次data[d]
    target[a,b,c]copydata[d]
    copytarget[a,b,c]copydata[]
    copytarget[a,b,c,d]第5次
    data[]
    target[a,b,c,d]target.size()==4
    打印abcd 程序完毕返回第4次第4次 for循环完成,返回第3次中的for循环i=1
    copydata[c,d]
    copytarget[a,b]copydata[c]
    copytarget[a,b,d]后面可以自己推导