APP下载

C语言程序设计递归算法的研究与应用

2021-03-10孙道层

电子技术与软件工程 2021年20期

孙道层

(德宏职业学院 云南省芒市 678400)

1 前言

在C语言程序设计中,如果一个函数直接或者间接地调用自身,那么这种调用就被称之为递归调用,递归调用是嵌套调用的特例[1-2]。递归算法在程序设计中得到广泛的应用,通过函数递归的调用可以将非常复杂的问题转换为规模较小简单相似的问题,层层递进,最终求解[3]。函数递归算法策略大大减少程序的代码量,函数通过递归调用本身可以实现解决问题过程所需要的重复计算。研究C语言程序设计函数递归算法,有利于正确使用函数递归进行程序设计,降低程序运行的时间复杂度和空间复杂度,提高程序执行效率[4-5]。

2 函数递归算法的特征

函数递归调用本身时,会在计算机内部存储结构中开辟一个栈,对函数调用现场发起保护,并将函数调用时的参数和局部变量保存到新分配的存储空间,函数调用结束返回时,计算机会自动释放函数调用时存储的局部变量和参数所占用内部存储空间,弹出返回地址,继续执行调用函数语句的下一条语句。

例1 利用递归算法计算正整数m 的阶乘m!。程序代码如下

(1)每次函数递归调用,都会缩小问题的规模,并且为了防止无限期的递归调用,必须有结束递归调用的约束条件。例1 中当m 的值为1 时,ft=1,结束递归调用,当m>1 时,发生递归调用,即在fact(m)函数中又调用fact(m-1),下面以3!为例,该函数递归的执行过程如图1所示。

图1:函数的递归调用

通过3 次递归调用函数fact(m)来计算3 的阶乘。……

登录APP查看全文