标题”把一个数分解成任意几个数之和“
话不多说,先说要求:题目为:
”把一个数分解成任意几个数之和“,
请通过编写代码(语言不限),试着把一个数的所有和式分解的结果全部输出出来,
例如:4的结果有,(1+3),(2+2),(1+1+2),(1+1+1+1)
看代码实现,很简单
后续有C语言版本
import java.util.Scanner;
public class Test {
static int[] arr=new int[10000];
static Scanner input=new Scanner(System.in);
static int num;
public static void main(String[] args) {
System.out.println("请输入一个要分解的数:");
num=input.nextInt();
search(num,1,0);
}
private static void search(int n, int s, int x) {
if(n>0) {
for(int i=s;i<=n;i++) {
arr[x]=i;
search(n-i,i,x+1);
}
return;
}
System.out.print(num+"="+arr[0]);
for(int i=1;i<x;i++) {
System.out.print("+"+arr[i]);
}
System.out.println();
}
}
递归程序有两个过程:递推和回归,要用选择语句完成,你不用考虑中间是怎么进行的,只要能写出递推和回归条件,然后用选择语句表达就行
这个题的回归条件是分解的每项remain等于0的时候就不用分解了
递推条件是:大于0的时候remain-1,输出每次的分解过程
4=3+1(1-1=0,不再分解)
4=2+2
4=2+1+1
4=1+1+1+1
类似这种过程,当数字-1=0的时候不分解