我遇到了這段代碼,但我無法理解遞歸如何工作在下面的代碼中,因爲在return
語句中使用了一個布爾或運算符,這是我以前從未見過的。它應該如何工作?由於返回語句中使用布爾OR操作,遞歸如何工作以下代碼?
bool match(char *first, char * second)
{
if (*first == '\0' && *second == '\0')
return true;
if (*first == '*' && *(first+1) != '\0' && *second == '\0')
return false;
if (*first == '?' || *first == *second)
return match(first+1, second+1);
if (*first == '*')
return match(first+1, second) || match(first, second+1); //How does it work?
return false;
}
注意:這樣做的一個重要結果是,如果第一次返回「true」,則不會發生第二次「匹配」調用。如果呼叫可能有副作用,短路行爲很重要。很明顯,知道'||'如何工作的人,但是由於這個問題被問到,所以很清楚。 – ShadowRanger
啊哈!現在很清楚它是如何工作的。非常感謝! –
@molbdnilo,這兩個調用是否同時發生? –