【发布时间】:2017-05-27 20:27:22
【问题描述】:
我正在尝试编写一个 recursive 函数,它通过指针及其大小获取数组,并返回数组中最长的一系列相同相邻数字的长度(假设有系列),
例如:
array: {1 2 3 3 4 5 6 6 6 6 7 8}
returns-->: 4
但我不知道我的功能有什么问题;我想我完全错了。
关于如何解决它的任何想法?
#include <stdio.h>
#include <stdlib.h>
int LongestSeries(int* arr, int size, int* count, int* maxcount);
int main()
{
int i, size, *arr, count=0, maxcount=0;
// allocation an array (unknow size)
{
printf("Enter Size of the Array-->:");
scanf("%d", &size);
arr = (int*)malloc(size * sizeof(int));
if (arr == NULL)
{
printf("Error!!");
exit(1);
}
printf("Enter Numbers for the Array:\n");
for (i = 0; i < size; i++)
{
printf("Enter a Number-->:");
scanf("%d", &arr[i]);
}
}
for (i = 0; i < size; i++)
printf(" %d ", arr[i]);
printf("\n");
printf(" %d \n", LongestSeries(arr, size, count, maxcount));
free(arr);
return 0;
}
int LongestSeries(int* arr, int size, int* count, int* maxcount)
{
if (arr[size-1] == arr[size-2])
count++;
if (maxcount<count)
maxcount = count;
LongestSeries(arr, size - 1, count, maxcount);
if (*arr==arr[0])
return maxcount;
}
【问题讨论】:
-
我们不是来写你的代码的。请学习使用您的调试器
-
那么,你想找到最长的重复数字序列,而不是最长的连续数字序列?在您的示例中,这两个都是 4。
-
您正在比较
maxcount < count当两者都是指针时,您可能想要比较它们的值