显示正整数个位数的所有唯一数字组合,其和等于使用C中递归的另一个正整数
我需要用C语言编写一个程序,从用户那里读取两个正整数, 数字显示正整数个位数的所有唯一数字组合,其和等于使用C中递归的另一个正整数,c,recursion,C,Recursion,我需要用C语言编写一个程序,从用户那里读取两个正整数, 数字N和S。程序应显示所有唯一编号 使用递归的N个位数的组合,其和等于S。 如。 对于N=3和S=10程序应显示: 8+1+1=10 7+2+1=10 6+3+1=10 5+4+1=10 6+2+2=10 5+3+2=10 4+4+2=10 4+3+3=10 如果某个数字超出范围,它将显示 “输入错误” 这是我到目前为止写的代码: void check(int n,int s) { int arr[n]; for (int
N
和S
。程序应显示所有唯一编号
使用递归的N
个位数的组合,其和等于S
。
如。
对于N=3
和S=10
程序应显示:
8+1+1=10
7+2+1=10
6+3+1=10
5+4+1=10
6+2+2=10
5+3+2=10
4+4+2=10
4+3+3=10
如果某个数字超出范围,它将显示
“输入错误
”
这是我到目前为止写的代码:
void check(int n,int s)
{
int arr[n];
for (int i=1;i<=n;i++)
{
arr[i]=1;
}
if (n==s)
{
int j=1;
while (j<n)
{
printf("%d+",arr[j]);
j++;
if (j==n)
{
printf("%d=%d",arr[j],s);
break;
}
}
}
else if (n<s)
{
printf("Wrong input");
exit(0);
}
else
{
}
}
int main()
{
int N,S;
scanf("%d %d",&N,&S);
if (N<=0 || S<=0)
{
printf("Wrong input");
exit(0);
}
check(N,S);
}
无效检查(int n,int s)
{
int-arr[n];
for(int i=1;iViewint arr[n];for(int i=1;ii故意跳过了arr[0]
。如果这会给我的解决带来问题,我可以更改它。与最近的任务相同。您不仅跳过了arr[0]
而且还为越界arr[n]编制了索引
使用该循环范围。@WeatherVane在我看来,我们有同样的问题要解决。查看int-arr[n];for(int i=1;ii故意跳过arr[0]
。如果它会在我的解决过程中进一步产生问题,我可以更改它。与最近的任务相同。你不仅跳过了arr[0]
但将超出范围的arr[n]
索引为循环范围。@WeatherVane在我看来,我们有同样的问题要解决。