java实现数字拆解(正整数的所有拆解结果)

题目:将一个正整数进行拆解,最大数不能超过2. 打印可拆解情况和所有拆解结果。

例如: 

3=1+2=2+1=1+1+1;

5=2+2+1=2+1+2=+2+1+1+1=1+2+2=1+2+1+1=1+1+2+1=1+1+1+1+2=1+1+1+1+1;  这8种情况都要输出。


解题思路:用递归来实现。

这个5其实就可以看成是 3+2,所以拆5就是拆3+拆2的结果组合。


对于任意整数n,拆解函数为f(n),递推公式为:

>最后一个拆解数是1,则拆解方式为g(n-1)+1,就是g(n-1)的结果集的最后再 +1 即可。

>最后一个拆解数是2,则拆解方式为g(n-2)+2

最后一个拆解数为1的时候终止。



import java.util.Scanner;

/** 
*  @author   LilyLee
 * @date     2017年4月26日
 * @time     上午11:01:28
 * @Version  1.0
 * @email    [email protected]
 *
 */
public class Dismantling {

	
	public static void main(String[] args) {
		int n=1;
		Scanner sc=new Scanner(System.in);
		n=sc.nextInt();
		dism(n);
	}
	
	static int ssum(int a[]){
		int sum=0;
		for(int i=1;i

你可能感兴趣的:(数据结构和算法,の,JAVA实现)