数据结构基础学习笔记一——尾递归
首先什么是尾递归?
如果一个函数中所有的递归形式调用都出现在函数的末尾,我们称这个递归函数是尾递归的。
换句话说,当递归调用是整个函数体中最后执行的语句,且它的函数值不属于表达式的一部分时,这个递归调用就是尾递归。——以上引用《算法精解:c语言描述》
那么为什么要用尾递归呢?
因为它快!因为它占用内存资源少。
更详细的解释是这样:当编译器检测到一个函数调用是尾递归时,它就会覆盖当前的活跃记录而不是在栈中去创建新的存储空间。这样,我们就是不停的覆盖前一个使用过,没有保存必要的栈帧,而不用不停的创建新的栈帧,所以函数的运算效率会提高,同时资源占用的更少。