我在 C++ 中有一个递归函数,我需要立即终止该函数,包括在特定时间后递归进行的所有调用,比如 60 秒。我尝试了以下但不起作用。takeTooLong 是一个全局变量,但如果它的值在一次调用中更改为 1,其他调用会一直将其视为 0。操作系统是Ubuntu 12.10。
main() 是这样的:
int main()
{
takesTooLong = 0;
startTime = clock();
RecursiveFunction();
endTime = clock();
printf("Elapsed time: %f", CalculateElapsedTime(startTime, endTime));
return 0;
}
我的递归函数:
void RecursiveFunction(Some Parameters)
{
if (takesTooLong == 1)
return;
endTime = clock();
differenceTime = CalculateElapsedTime(startTime, endTime);
if (differenceTime > MAX_SECONDS)
{
takesTooLong = 1;
}
if (takesTooLong == 0)
{
for (i = 0; i < n && takesTooLong == 0; i++)
{
RecursiveFunction(Some Updated Parameters);
}
}
}