已知輸入整數14時,運行結果如下,試根據規律編寫程序

#include <stdio.h>
int t;//標記i的重復次數
//void divide(int i,int number)
//{
//int k,n=number;
//while(n>i)
//{
// n=n-i;
// if((n+i)!=number)
// {
// for(k=0;number-k>n;k=k+i)
// printf("%d+",i);
// printf("%d\n",n);
// }
// else
// printf("%d+%d\n",i,n);
//}
//}
void divide(int i,int n)
{
printf("%d",i);
for(int j=0;j<t;j++)
{
printf("+%d",i);
}
printf("+%d\n",n-i);
if(n-i <= i)
{
return;
}
else{
t ++;
divide(i,n-i);
}
}
int main()
{
int n;
printf("Input:");
scanf("%d",&n);
for(int i=1;i<=n/2;i++)
{
t = 0;
divide(i,n);
}
return 0;
}
已知輸入整數14時,運行結果如下,試根據規律編寫程序

//遞歸
#include <stdio.h>
int num(int a,int i,int n)
{
int j=0,k;
if(a<=0)
return a;
k=num(a-i,i,n+i)+i;
for(j=i;j<=n;j=j+i)
printf("%d+",i);
printf("%d\n",k);
return k;
}
int main()
{
int number,n;
printf("input:");
scanf("%d",&number);
for(n=1;n<=number/2;n++)
num(number-n,n,n);
return 0;
}
//非遞歸
#include <stdio.h>
void divide(int i,int num,int n)
{
int t,flag = 0;//t:標記最尾的一個數
if(n % i)
{
t = n % i;
flag = 1;
}
else
t = i;
while(t < n)
{
for(int k = 0 ; k < num - 1; k ++)
{
printf("%d+",i);
}
if(flag)//不能整除
{
printf("%d+%d\n",i,t);
}
else{
printf("%d\n",t);
}
t += i;
num --;
}
}
int main()
{
int n;
printf("Input:");
scanf("%d",&n);
for(int i=1;i<=n/2;i++)
divide(i,n/i,n);
return 0;
}