用递归解决这个问题。
如把4分解为:
4=1+1+1+1;
4=1+2+1;
4=2+2;
4=3+1;
參考答案:PROGRAM aa;
VAR
i,j:integer;
a:array[1..100] of integer;
PROCEDURE fun(k,t:integer);
var
i,j:integer
begin
if t=n then for i:=1 to i-1 do write(a[i])
else begin
if t>n then exit
else begin
for i:=1 to a[i-1] do
fun(k+1,t+i);
end;
end;
BEGIN
read(n);
fun(1,0);
END.
这个程序我没调试(机子里没有pascal,不过思路已经出来了!)只是有一点小错误了:》实在不好意思