搜索
写经验 领红包

函数和递归的区别(函数递归栈)

导语:函数和递归

函数和程序结构

函数可以简化程序,函数可以使程序模块化

用函数将较长的程序分割成短小的程序段,可以方便理解

程序例子:

将部分功能从程序中移出作为独立函数,星号绘制函数。

星号数量计算函数

整体控制函数

完整程序如下:

整个程序可读性很强。使用函数的思想编写程序,可以大大增加程序的模块化程度

程序的运行结果:

递归的定义

递归:函数定义中使用函数自身的方法

经典例子就是阶乘:n!=n(n-1)(n-2)...(1)

0的阶乘定义为1,其他数字定义为这个数字乘以比这个数字小1的数的阶乘

递归不是循环

递归定义特征:有一个或多个基例是不需要再次递归的;所有的递归链都要以一个基例结尾

递归函数

通过一个累计器循环计算阶乘

阶乘的递归定义函数:

运行递归函数fact()计算阶乘

>>>fact(5)

120

递归每次调用都会引起新函数的开始

递归有本地值得副本,包括该值得参数

阶乘递归函数中:每次函数调用中的相关n值在中途的递归链暂时存储,并在函数返回时使用

5!的递归调用过程图

本文内容由小思整理编辑!