上面的解法我完全没有理解,怎么都没有理解怎么会想到这样去做递归,智商太低没办法。
但是没有关系,我还是绞尽脑汁想到了一种方法,即使常见的构建回溯树的方式。虽然消耗了些多余的空间,但是也算不错,代码简单有用。
当求 4的划分数时我是这样构建树的:(在只是画了两层,如下的树我们则可以用来遍历求和,如果和等于 4则划分数 +1)
public class HuaFen{ public int num; //需要划分的个数 //n表示需要划分的值, m表示迭代到的层数,count表示当前的总和 public void huaFen(int n,int m,int count){ for( ; m<=n;m++){ //如果大于了我们需要的值则往上走吧,不需要再往下走了 System.out.println("count"+count); if(count+m>n ){ } if(count+m==n ){ num++; } if(count+m<n){ huaFen(n,m,count+m); } } } public static void main(String args[]){ HuaFen huan = new HuaFen(); huan.huaFen(7,1,0); System.out.println(huan.num); } }
原文地址:http://blog.csdn.net/andan14/article/details/39085679