【发布时间】:2023-03-24 11:55:01
【问题描述】:
我有一个具有指数复杂度的函数(其内容不能修改):
void exponential_func(int depth){
// recursively search a tree and extract best value
return value;
}
这个函数被迭代调用
void call_exponential_function(int max_depth){
for(int i = 1; i < max_depth; i++){
cout << exponential_func(i) << endl;
}
}
我想在一定的时间限制内进行最深入的搜索。例如,时间限制为 60 秒。对于 i=1 到 5,调用 exponential_func(i) 总共需要 30 秒。exponential_func(6) 需要 120 秒。时间到了如何停止call_exponential_function的执行?
【问题讨论】:
-
recursively search a tree and extract best value->recursively search a tree and extract best value and also check if time limit is reached -
到哪里检查是否达到时间限制?
-
可能就在每次通话的开头。然后你必须决定是返回一个代码来表示失败还是抛出一个异常。根据递归函数的复杂性,任何一个都可能更有吸引力。
-
嗨,我编辑了问题以使其更清楚。在通话前检查时间不起作用,因为您不知道
exponential_func需要多长时间才能完成(只是需要更长的时间)。该函数需要在执行时停止。