【发布时间】:2012-12-05 00:34:34
【问题描述】:
我有一个很难处理的任务。
我正在尝试编写一个递归函数(根本没有循环),给定一个数组及其长度,它将打印一对子数组,每个子数组的总和将是整个数组总和的一半。换句话说,数组将被分成两组整数,使它们的和相等。
例如,给定数组 {1,2,2,0,5},函数应该输出 {1,2,2} {0,5}
我必须递归地执行它,使用一个仅获取数组本身及其大小的函数。我也只能使用一个额外的递归函数来解决这个问题。
任何想法或想法将不胜感激。
你好! 我们在课堂上得到了这样的代码
int SubsetSum(int arr[], int idx, int n, int S) {
if (S==0) return 1; //This is stopping condition #1.
if (S<0 || n==0) return 0; //This is stopping condition #2.
return SubsetSum(arr, idx+1, n-1, S-arr[idx]) || SubsetSum(arr, idx+1, n-1, S);
}
“||”运算符在递归方面是什么意思? 谢谢大家!
【问题讨论】:
标签: c recursion integer sum arrays