我有一个函数 range()
,它根据两个参数 min 和 max 创建并返回一个数组。数组填充最小值和最大值之间的整数(包括最小值,排除最大值)。
我从一个测试结果知道有一个死循环的情况(10s超时),但我还没有弄清楚它在哪里。
功能:
int *range(int min, int max)
{
int length;
int i;
int *range;
length = max - min;
if (length < 1)
{
range = 0;
return (range);
}
range = (int*)malloc(sizeof(range) * length);
i = 0;
while (i < length)
{
range[i] = min + i;
i++;
}
return (range);
}
或者我遗漏了一些东西而其他东西导致了超时?
最佳答案
int *range(int min, int max)
{
int length;
int i = 0;
int *rnge_ptr;
length = max - min;
if (length < 1)
{
return NULL;
}
range_ptr = (int*)malloc(sizeof(int) * length);
while (i < length)
{
range_ptr[i] = min + i;
i++;
}
return range_ptr;
}
关于无法想象无限循环的情况,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58016792/