【发布时间】:2014-05-26 14:07:36
【问题描述】:
我正在尝试编写 A 递归实现,但它不起作用。你能帮我找出错误吗。我只需要 C 的递归解决方案。
void findsum(int arr[],int i, int k){
if (k <= 0 || arr[i] > k) return;
if (arr[i] <= k) {
k -= arr[i];
if (k == 0) {
NSLog(@"Summ %d, %d",arr[i], arr[i]); return;
}
}
if (i == (25)) return;
for (int a=i ;a<25; a ++ ) {
findsum(arr, a, k);
}
}
int main()
{
int set[] = {18897109, 12828837, 9461105, 6371773, 5965343, 5946800, 5582170, 5564635, 5268860, 4552402, 4335391, 4296250, 4224851, 4192887, 3439809, 3279833, 3095313, 2812896, 2783243, 2710489, 2543482, 2356285, 2226009, 2149127, 2142508, 2134411};
int sum = 100000000;
int n = sizeof(set)/sizeof(set[0]);
for (int i = 0; i < n; i++) {
findsum(set, i, sum);
}
}
【问题讨论】:
-
but it dont work. Can you help me to find mistake.什么不行?错在哪里? -
函数 findsum 不要停止
-
另外你每次都用
for (i = 0 ;i<26; i ++ )初始化i = 0。
标签: c recursion functional-programming sum