为什么递归效率低?
一、函数调用需要使用内存中的栈来保存函数的数据以及访问链和控制链,如果数据是必须的,那么访问链和控制链等所占的内存则是额外的。二、使用递归,会进行很深层次的调用函数,所以需要调用很多函数,需要建立许多的访问链和控制链,占用大量内存,而且调用时传递参数,申请空间,返回时恢复现场,都有时间的花销,所以递归效率低。三、内存的栈当作一个容器,每次递归,函数都往容器中添加容量,当添到一定层次,容器满了,就溢
·
一、函数调用需要使用内存中的栈来保存函数的数据以及访问链和控制链,如果数据是必须的,那么访问链和控制链等所占的内存则是额外的。
二、使用递归,会进行很深层次的调用函数,所以需要调用很多函数,需要建立许多的访问链和控制链,占用大量内存,而且调用时传递参数,申请空间,返回时恢复现场,都有时间的花销,所以递归效率低。
三、内存的栈当作一个容器,每次递归,函数都往容器中添加容量,当添到一定层次,容器满了,就溢出了,如果用递归,如果忘记了递归截至条件,你就可能进入了无穷递归,无穷递归必然会溢出,所以,不提倡递归。
更多推荐
已为社区贡献1条内容
所有评论(0)