[英]Stop program(containing recursive function) after certain time
假設我想在 x 秒后關閉程序(不是#define)
我的程序正在運行一個遞歸函數(遞歸樹)
無論遞歸深度如何,我該怎么做才能使程序的運行時間在任何地方都可用,我的第一個想法是使用指針作為函數參數,但我很快就感到困惑了。
謝謝你的幫助。
只需將開始時間存儲在一個全局變量中,然后在遞歸函數中找到當前時間和那個時間之間的差異。
#include <time.h>
static time_t start_time;
static void f(void) {
// ...
time_t current_time = time(NULL);
int diff = current_time - start_time;
// ...
}
int main(void) {
start_time = time(NULL);
f();
return 0;
}
您可以將開始時間作為參數傳遞,但沒有必要將相同的值傳遞給每個遞歸調用。 它只會白白占用你可用的堆棧空間。
這個問題有兩個主要解決方案,第一個是擁有一個全局或類/結構數據成員,您可以隨時在此函數中訪問它。
第二個是向你的函數添加一個額外的參數,然后遞歸地重新傳遞它,在這種情況下你想通過引用來避免每次傳遞時都進行復制。
我能想到的最終解決方案是,如果你的語言支持函數內的靜態變量,那么當你第一次調用函數時,你檢查這個靜態變量是否為空,如果是則初始化。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.