這裏是該函數的每個部分中的最壞的情況下:優化這個小功能,這將在運行C的倍數量龐大
- 的
while
循環運行53402倍時size
等於9 - 這意味着
find_square()
每個呼叫調用find_square()
本身53402次,直到row == size
,在此情況下是9
所以呼叫到find_square()
總數爲因此(53,402)^ 10 = 188 quattuordecillion。
這甚至不是最終功能的全部,但如果它已經很慢了,我想先解決它。顯然這是一個可笑的數量的電話,但我真的不能看到它的方式。我願意接受任何想法,這裏的任何幫助都會很棒,謝謝!
void find_square(char*** hashed_dict, char*** grouped_dict, char** square, int size, int row) {
if (row == size) {
return;
}
int i = 0;
while (grouped_dict[size - 1][i] != NULL) {
fill_row(square, row, size, grouped_dict[size - 1][i]);
find_square(hashed_dict, grouped_dict, square, size, row + 1);
i++;
}
}
void fill_row(char** square, int row, int size, char* word) {
for (int i = 0; i < size; i++) {
square[row][i] = word[i];
}
}
沒有足夠的上下文。談論性能和手動優化,沒有考慮到特定的系統,並不是真正有意義的。 – Lundin
你想要什麼樣的環境? – numberjak
您是否考慮過「動態編程」方法? – babon