我试图用C语言写一个递归函数,
给定一个数组,数组的大小以及元素int target,我想找到int target最后一次出现的索引。

#include <stdio.h>
int rLookupAr(int array[], int size, int target);
int main()
{
   int numArray[80];
   int target, i, size;

   printf("Enter array size: \n");
   scanf("%d", &size);
   printf("Enter %d numbers: \n", size);
   for (i=0; i < size; i++)
      scanf("%d", &numArray[i]);
   printf("Enter the target number: \n");
   scanf("%d", &target);
   printf("rLookupAr(): %d", rLookupAr(numArray, size, target));
   return 0;
}
int rLookupAr(int array[], int size, int target)
  {
  }

然而,我已经被困了几个小时。
我是递归函数的初学者,任何帮助都将不胜感激!
一些例子:
Enter array size:
5
Enter 5 numbers:
2 1 3 2 4
Enter the target number:
2
rLookupAr(): 3

最佳答案

如果在最后一次出现之后,则可以在数组的末尾开始搜索并向后搜索。
C数组由指向任何元素的指针和您拥有的长度或索引上限值引用。
看递归函数的一种方法是问“算法的每一步只是重复整个过程,只是在输入数据的一个子集上?”-考虑诸如处理树(其中每个子节点都是树本身)或快速排序(其中每个轴为您提供两个以上的子节,您可以再次旋转)之类的问题。
假设在[0...N]数组中查找值与通过检查[0]然后检查[1...N]来查找值相同,然后通过检查[1]然后检查[2..N]来再次重复您自己…希望您看到一个模式正在出现。
对于向后工作,给定数组的开始和长度N,首先检查[N],然后重复范围[0..(N-1)],然后检查[N-1],然后重复[0...(N-2)]
我希望这能使你在没有我给你答案的情况下找到解决办法。

关于c - 递归函数来查找元素的最后一次出现,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/49188672/

10-10 18:23