當前位置:編程學習大全網 - 編程軟體 - 為什麽編程中很少使用遞歸?

為什麽編程中很少使用遞歸?

例如,堆棧類似於桶。推進桶裏的東西會壓在桶底,放後面的東西會放在桶面。每次調用壹個函數,都會有額外的開銷。當壹個父函數調用壹個子函數時,它會先把父函數的當前狀態保存在寄存器中,包括當前的指令地址信息,類似於先把這些信息放在桶底,再把子函數參數等信息放入桶中,也就是桶面。子函數執行後,剛剛放入桶中用於執行子函數的信息將被推出堆棧,桶中會顯示最初保存在桶底的父函數的下壹條指令。因為每次調用壹個函數,都有類似的入棧和出棧操作,而遞歸就是函數本身調用自己,當然也會產生類似的入棧和出棧操作,產生額外的開銷。

當不是遞歸的時候,也就是叠代的時候,是在同壹個函數內循環操作,沒有調用子函數帶來的開銷,所以大多數情況下,非遞歸形式比遞歸形式略快。此外,遞歸比叠代消耗更多內存,因為不同遞歸層定義的變量需要分配額外的內存,不像非遞歸只定義壹次,只分配壹次。

  • 上一篇:Fanuc是什麽
  • 下一篇:排鉆怎麽調快慢
  • copyright 2024編程學習大全網