程式碼之美---遞迴之美

sld666666發表於2014-11-07

第一章: 正規表示式匹配器

書中主要實現了一個簡單的正規表示式引擎,這裡我簡化為判斷字串中是否包含子串。


bool mathed(char* text, char* sub)
{
    if (*sub == '\0')return true;

    if (*text != 0 && *sub == *text)
        return mathed(text + 1, sub + 1);

    return false;
}

bool hasSubStr(char* text, char* sub)
{
    do{
        if (mathed(text, sub)) return true;
    } while (*text++ != '\0');

    return false;
}

好簡潔的程式碼, 我也為這種簡潔驚歎。
在以上程式碼中,我學到了:

  1. 在程式設計中一個良好的規則就是:在處理複雜的情況之前首先處理容易的情況。 細分功能,先實現簡單的,然後疊加, 如: mathe函式
  2. 遞迴的強大功能,其對程式碼能帶來非常大的整潔。

相關文章