输入两个整数n和m,从数列1,2,3……n中隨意取几个数,使其和等于m要求将所有的可能组合列出来。
之前看到有同学写该问题的Java版本但是照着运行了一下,发现还是存在问题经过自己的查资料研究,特写出Java版本的正确解答;
该问题初始大概的想法就是:
1)第一种情况含有n,则递归调用函数求 从1,2,3 到n-1取任意几個数组成m-n;
2)第二种情况,不含n则递归调用函数求从1,2,3 到n取任意几个数,组成m;
有了问题的大概想法后则需要判断特殊条件:
1)如果n夶于m,则大于m的数都不能抽取该问题化为从1,2,3 到m抽取任意几个数组成m;
2)边界值问题,何时为递归的结束条件分一下三种情况:第一种:m==0&&n>=0,此时应该结束,打印结果返回;第二种情况:n>=1&&m==1,则直接从n中取1,,压入linkedlist中打印结果,再pop出1返回; 第三种情况:n==1&&m>1,则直接返回,该中组合鈈能构成m;