【发布时间】:2018-06-28 07:21:54
【问题描述】:
我写了这个函数,但它只适用于非负整数。
int is_sum(int x, int a[], int n)
{
if (x == 0)
return 1;
if (n==0)
return 0;
return is_sum(x-a[n-1], a, n-1) || is_sum(x, a, n-1);
}
如何让它在负整数上工作,如何跳入 2?
int is_sum(int x, int a[], int n)
{
if (x == 0)
return 1;
if (n==0)
return 0;
return is_sum(x-a[n-1], a, n-1) || is_sum(x, a, n-1);
}
【问题讨论】:
-
请提供示例输入以演示工作和非工作输入。
-
会不会:return is_sum(x-a[n], a, n-2) || is_sum(x, a, n-1) bcoz 不允许相邻元素?
-
显示代码适用于非负数并注意“无相邻数字”规则?我没有在代码中看到这一点,因为我希望
is_sum(x-a[n-1], a, n-2)在某个地方。
标签: c recursion subset-sum