国产成人毛片视频|星空传媒久草视频|欧美激情草久视频|久久久久女女|久操超碰在线播放|亚洲强奸一区二区|五月天丁香社区在线|色婷婷成人丁香网|午夜欧美6666|纯肉无码91视频

迭代和遞歸的實(shí)例 舉例說(shuō)明什么是句法結(jié)構(gòu)的遞歸性,遞歸?

舉例說(shuō)明什么是句法結(jié)構(gòu)的遞歸性,遞歸?同樣的語(yǔ)法結(jié)構(gòu)可以層層嵌套,同一條結(jié)構(gòu)規(guī)則可以重復(fù)使用而不致造成結(jié)構(gòu)上的混亂,借數(shù)學(xué)的術(shù)語(yǔ)來(lái)說(shuō),這就是語(yǔ)法結(jié)構(gòu)規(guī)則的"遞歸性"?! ≡诰浞ńM合中,遞歸性有兩種表現(xiàn)

舉例說(shuō)明什么是句法結(jié)構(gòu)的遞歸性,遞歸?

同樣的語(yǔ)法結(jié)構(gòu)可以層層嵌套,同一條結(jié)構(gòu)規(guī)則可以重復(fù)使用而不致造成結(jié)構(gòu)上的混亂,借數(shù)學(xué)的術(shù)語(yǔ)來(lái)說(shuō),這就是語(yǔ)法結(jié)構(gòu)規(guī)則的"遞歸性"。  在句法組合中,遞歸性有兩種表現(xiàn),一種是從初始結(jié)構(gòu)開始,自始至終重復(fù)運(yùn)用同一條語(yǔ)法規(guī)則。例如"計(jì)算機(jī)/我//喜歡"這個(gè)句子是主謂結(jié)構(gòu),它們的謂語(yǔ)( / 以后的部分)本身又是主謂結(jié)構(gòu),這里,"主語(yǔ) 謂語(yǔ)"這條語(yǔ)法規(guī)則不間斷地使用了兩次;另外一種表現(xiàn)是,同一條語(yǔ)法規(guī)則可以在一個(gè)結(jié)構(gòu)上間隔地重復(fù)使用?! ±缭?我/看///過(guò)//他/////寫////的///散文"中,第一層使用了"主語(yǔ) 謂語(yǔ)"規(guī)則,造成了"我/看過(guò)他寫的散文"這個(gè)主謂結(jié)構(gòu),第五層又使用了一次"主語(yǔ) 謂語(yǔ)"規(guī)則,造成了"他寫"這個(gè)主謂結(jié)構(gòu)。

尾遞歸究竟是好是壞?

概念

遞歸如果層次太多,就會(huì)照成棧溢出異常,因?yàn)槊空{(diào)用一次就會(huì)新生成一個(gè)棧幀,使用這個(gè)棧幀保留當(dāng)前函數(shù)的狀態(tài)值。如果沒有必要保存狀態(tài)值,那么就可以復(fù)用棧幀,不會(huì)造成棧溢出。

舉例

這里以求n的階乘舉例:

正常遞歸:

假如n=3;那么每一步都需要保留n值以及下一步函數(shù)的返回值,所以每次調(diào)用都需要?jiǎng)?chuàng)建一個(gè)新的棧幀

尾遞歸:

假如n=3,這里每一次調(diào)用是可以復(fù)用棧幀的,因?yàn)椴恍枰4鏍顟B(tài)值。


總結(jié)

所以說(shuō)當(dāng)遞歸是在當(dāng)前棧幀執(zhí)行完之后,不需要再保留當(dāng)前棧幀,而是帶著當(dāng)前棧幀的結(jié)果,進(jìn)入到下一棧幀,就可以優(yōu)化為尾遞歸,一般尾遞歸需要滿足遞歸調(diào)用是函數(shù)體中最后執(zhí)行的語(yǔ)句。比如階乘的例子中最后執(zhí)行的語(yǔ)句是直接調(diào)用factorial(n-1, n*result),而不是一個(gè)表達(dá)式n * factorial(n -1),如果是表達(dá)式的話就需要一個(gè)棧幀來(lái)保留n和factorial(n -1)的結(jié)果。