c/c++语言开发共享嵌入式c语言编程之递归函数

嵌入式之递归函数:函数的自我调用,是自己定义自己的过程。 函数在调用自身时,在栈区为局部变量和参量分配内存空间,但并不复制内存代码,只重新分配相应的变量。每个递归调用返回时,其局部变量和参数的空间都

嵌入式之递归函数:函数的自我调用,是自己定义自己的过程。

函数在调用自身时,在栈区为局部变量和参量分配内存空间,但并不复制内存代码,只重新分配相应的变量。每个递归调用返回时,其局部变量和参数的空间都被释放,在函数中的调用点继续执行。

递归程序优点:能生成某些算法的更清晰、更简洁的版本,某些专门问题(如ai)本质上是递归的,特别适合递归解,比迭代更便于思考。

多数递归不能明显改善内存效率,很多程序的递归版本比等价的迭代版本运行得慢,原因在于反复调用的开销大。

过分递归可能溢出堆栈,冲垮程序的其他代码或数据,所以要保证递归深度不会失控。

编写递归时,必须在适当的位置放置判断条件,用于强制返回,否则函数可能在被调用后永远也不返回。在开发时可用printf()和getchar()监视运行的推进并寻找错误。

二、举例:用递归法将整数装换成字符

  void convert(int n)    {    int i;    if( (i = n/10) != 0)    convert(i); // 只要不满足if条件就一直调用自己,所以递归函数一定要加条件限制,否则会陷入死循环    putchar(n%10 + '0';)    }

本文来自网络收集,不代表计算机技术网立场,如涉及侵权请联系管理员删除。

ctvol管理联系方式QQ:251552304

本文章地址:https://www.ctvol.com/c-cdevelopment/607129.html

(0)
上一篇 2021年5月14日
下一篇 2021年5月14日

精彩推荐