gpt4 book ai didi

我们可以将这个嵌套循环finding_indice 转换为递归吗?

转载 作者:行者123 更新时间:2023-11-30 19:43:19 25 4
gpt4 key购买 nike

我们可以将这个嵌套循环修改为递归函数吗?
目标:在一个int数组中找到两个总和等于给定目标值的索引。这是工作迭代代码,如何以不同的方式将此函数视为递归函数?

#include<stdio.h>
#define SIZE 15
int find_indice(const int arr[],int size,int target,int *ind_1,int *ind_2);

int main(){
int arr[SIZE]={0,1,3,4,5,6,7,8,9,15,-5,0,9,10,23};
int target=-2;
int ind1,ind2;

find_indice(arr,SIZE,target,&ind1,&ind2);

if(ind1!=-1 && ind2!=-1){
printf("array[%d]=>%d,array[%d]=>%d \n",ind2,arr[ind2],ind1,arr[ind1]);
}
else{
printf("Not found! \n");
printf("array[%d]=>%d,array[%d]=>%d \n",ind2,0,ind1,0);
}
return 0;
}

int find_indice(const int arr[],int size,int target,int *ind_1,int *ind_2){

int i,j,found=0;

for(i=0;i<size-1;i++){
for(j=0;j<size;j++){
if((arr[i]+arr[j])==target){
*ind_1=i;
*ind_2=j;
found=1;
}
}
}

if(found==0){
*ind_1=-1;
*ind_2=-1;
}

return 0;
}

最佳答案

我不知道如何将循环转换为同一函数的递归调用,但这里有一些关于您的代码的注释:

printf如果您找不到索引,则语句毫无意义。

为什么你停在 i<size-1在外循环中?测试应该是i < size ,除非您希望索引不同,但您的代码没有实现此约束。

find_indice()应该返回找到的状态,这比在 *ind_1 中存储虚假索引要简单得多和*ind_2 ,并且允许您使用正确的数组索引类型:size_t .

您应该从 find_indice() 返回当您找到匹配项时立即进行,无需尝试所有可能性。

您可以通过在 j=i 处启动内循环来将运行时间减半。而不是j=0 。请注意,对于不同的目标,例如 -10 , find_indice()可以在 *ind_1 中返回相同的索引和*ind_2 。这可能不是我们所期望的。您可以在 j=i+1 处开始内循环。如果不需要的话。

关于我们可以将这个嵌套循环finding_indice 转换为递归吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29727040/

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