java的递归拆数

package day07;
import java.util.Scanner;
public class day08 {

	static int []a = new int[100];
	
	public static void main(String[] args) {
		Scanner scan = new Scanner(System.in);
		int n = scan.nextInt();
		number(n,0,n,0);

	}
	public static void number(int n,int sum,int max,int j){
		for(int i = n;i>0;i--){
			sum = i;
			
			if(sum>max){
				break;
			}else if(sum == n){
				a[j] = i;
				int temp=0;
				for(int k=0;k<=j;k++){
					
					temp += a[k];
					
				}
				if(temp!=max){
					continue;
				}
				for(int k=0;k<=j;k++){
					System.out.print(a[k]);
					if(k!=j){
						System.out.print("+");
						
					}
					
				}
				System.out.println();
			}
			else{
				a[j] = i;
				number(n-1,sum,max,j+1);
			}
		}

	}
}

代码写的不是很简介,请批评指正!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值