递归和非递归的区别 求递归转化为非递归的方法?
求递归转化为非递归的方法?
理论上,所有递归程序都可以由非递归程序实现。循环方法是所有递归到非递归转换中最理想的方法,它可以使代价最小化。然而,它也是最复杂的分析,简单的递归可以用这种方式处理。为了便于理解,这里有一个最简单的例子:寻找n的阶乘。递归方法:int factorial(int n){if(n> 1){return n*factorial(n-1)//递归函数调用}else if(n==1){return 1//递归退出}else{return error//报告输入错误}非递归方法:factorial(int n){int k=1//增量int t=1//临时结果while(k!=n){t*=k}Return t}
递归算法是一种直接或间接调用自身的算法。在计算机程序设计中,递归算法对于解决一大类问题是非常有效的。它往往使算法的描述简洁易懂。递归是在过程或函数中调用自身。在使用递归策略时,必须有一个显式的递归结束条件,称为递归退出。递归算法通常非常简单,但效率较低。因此,不建议使用递归算法来设计程序。在递归调用过程中,系统打开一个栈来存储每一层的返回点和局部数量。太多的递归很容易导致堆栈溢出。
递归和非递归的区别 递归算法经典实例 将递归算法转化为非递归算法
版权声明:本文内容由互联网用户自发贡献,本站不承担相关法律责任.如有侵权/违法内容,本站将立刻删除。