问答题
对于正整数n,输出其和等于n且满足以下限制条件的所有正整数的和式,组成和式的数字自左至右构成一个非递增的序列,如n=4,程序输出为; 4=4 4=3+1 4=2+2 4=2+1+1 4=1+1+1+1 test是实现该功能的C程序段,请将未完成的部分补足,使之完整。test函数为一递归函数,参数n为被分解和式的数,k为当前的分解深度。算法思想是对n的所有合理的和式分解,将分解出的数(称为和数)存于数组a[]中。当其中一个分解已不再需要进一步进行时,即找到一个解,将存于a[]中的一个完整和式的和数输出。当还需要进一步分解的数及分解时,以要进一步分解的数及分解深度为参数,递归调用test函数。 #define MAXN 100 int a[MAXN];test(Int n, lnt K] {int i,j; for(j= (1) i j>:1 j j一一) (3分) (a[k]=j; if( (2)) ) (3分) {printf(”%d=%d”? a[0], a[1]); for(i=2;i<=k;i++) prin七f(“+%d”, a[i]); printf(“\n”); } else test((3);k+1); (4分) } } main()( test(4, 1); )【中国科学技术大学1997三、1(10分)】
【正确答案】正确答案:(1)n (2)j==n (3)n—j
【答案解析】