gpt4 book ai didi

c - 使用C语言中的递归函数搜索数组中的元素

转载 作者:行者123 更新时间:2023-11-30 18:33:32 24 4
gpt4 key购买 nike

我是递归数组的初学者,因此需要一些指导。我正在尝试查找数组中是否存在某个元素。

// Program to find whether an element exist in an array or not.
#include <stdio.h>
int arr[5]= {1,2,3,4,5};

int fooSearch(int array1[],int N,int i, int X)
{
if(i==N)
return 0;
else if (array1[i]==X)
return 1;
else
return fooSearch(array1,N,i++,X);
}

// N denotes total size 5
// i counter that moves from 0 to 4 and eliminate recursion when it reaches 5
// X is the element to be found


int main() {
fooSearch(arr,5,0,3);
return 0;
}

我得到的错误是段错误(SIGSEGV)

请指导我这段代码做错了什么。

最佳答案

i++ 是一个后置增量,它在包含它的表达式被求值之后递增 i 。因此,对 fooSearch 的每次调用实际上都会变成 fooSearch(array1, N, 0, X)。递归是无止境的,因此会出现段错误(或我的编译器上的堆栈溢出)。 (您可以通过将 printf("%d\n", i) 放置在函数顶部来确认 i 不变。)

通过使用前缀增量来解决此问题,这会在评估之前增加变量。

return fooSearch(array1, N, ++i, X); 

或者使用i+1,因为无论如何你都不会重用局部变量。

return fooSearch(array1, N, i+1, X); 

关于c - 使用C语言中的递归函数搜索数组中的元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56818795/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com