尾部遞歸是一種編程方法調用,其中方法調用自身,然后立即返回第二次調用的值。換句話說,當方法中的最后一條語句是對同一方法的另一次調用時,就會發生尾部遞歸。第二次方法調用中的參數通常與第一次不同,但這不是必需的。為...
尾部遞歸是一種編程方法調用,其中方法調用自身,然后立即返回第二次調用的值。換句話說,當方法中的最后一條語句是對同一方法的另一次調用時,就會發生尾部遞歸。第二次方法調用中的參數通常與第一次不同,但這不是必需的。為了使遞歸有效,在其內部調用的方法必須返回一個具體的值,如數字、字符串或其他對象。不返回值的Void方法對遞歸不起作用。尾部遞歸存在于許多計算機語言中,包括C遞歸調用必須是其調用方法中的最后一個語句并不一定意味著遞歸調用是方法中的最后一行。適當的尾部遞歸調用也可以在控制結構內部找到,這意味著,在源代碼中,控制結構可以結束方法而不是調用。這是重要的區別在這種情況下,控制結構不是一個編程語句,而是計算機語言的一個內置部分。尾部遞歸存在于許多計算機語言中,包括Java和C。通常,這些遞歸調用可以使用其他方法重寫,例如for循環、while循環,或goto語句。當創建對同一方法的多個連續調用時,可以發現遞歸的實用性。遞歸通常是完成重復任務的最干凈和最簡單的方法。尾部遞歸的一個常見示例是計算數字的階乘的方法。此過程非常理想,因為從任何數字開始,每個所以,要求5的階乘,正確的方法是乘以5*4*3*2*1遞歸的產生是因為factorial方法是如何構造的:如果factorial為1,則返回1,否則返回給該方法的數字減去1的階乘。此方法也很有用,因為它可以使用任一類型的尾部遞歸等價地編寫,在最終的方法調用周圍有或沒有控制語句。尾部遞歸只是多種遞歸類型中的一個例子。所有遞歸類型中的概念本質上都是相同的,即在某種程度上方法調用自身。在這些類型中,尾部遞歸的區別在于,遞歸調用的值會立即返回,而調用方法中在該調用之后不會發生其他任何事情
-
發表于 2020-08-07 07:53
- 閱讀 ( 671 )
- 分類:電腦網絡