C++ 思路跳躍

2023-03-20 15:52 更新

跟蹤程序執(zhí)行流程是閱讀代碼的一種方式。另一種可選的方式我稱之為“思路跳躍”。 當(dāng)你遇到一個(gè)函數(shù)調(diào)用,我們不去跟蹤執(zhí)行流程,而是假定函數(shù)工作正常并返回合適的值。

事實(shí)上,我們前面已經(jīng)使用過思路跳躍,比如調(diào)用內(nèi)置函數(shù)。當(dāng)調(diào)用cos或exp時(shí),我們并沒有檢查函數(shù)的實(shí)現(xiàn)。我們只是假定這些函數(shù)能正常工作,因?yàn)樵O(shè)計(jì)庫的都是很厲害的程序員。

調(diào)用自己寫的函數(shù)也是如此。例如,在5.8節(jié)我們寫了一個(gè)函數(shù)isSingleDigit用來判斷一個(gè)數(shù)是否處于0和9之間。只要能夠通過測(cè)試或者檢查代碼確定這個(gè)函數(shù)是正確的,我們就能再次使用這個(gè)函數(shù)而不需要檢查代碼。

這個(gè)方法同樣適用于遞歸函數(shù)。碰到遞歸調(diào)用時(shí),我們不是跟蹤執(zhí)行流程,而應(yīng)假定遞歸調(diào)用正常工作(能產(chǎn)生正確的結(jié)果),然后提出問題,“假設(shè)能夠計(jì)算n-1的階乘,能否計(jì)算n的階乘?”。很明顯,可以通過n-1乘以n來計(jì)算n的階乘。

當(dāng)然,當(dāng)你甚至還沒有編寫完的時(shí)候就假設(shè)函數(shù)正常工作可能有點(diǎn)奇怪,但是這也是我稱之為“思路跳躍”的原因。

以上內(nèi)容是否對(duì)您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號(hào)
微信公眾號(hào)

編程獅公眾號(hào)