深究递归和迭代的区别、优缺点及实例对比
1.迭代是人,递归是神! 从“编程之美”的角度看,可以借用一句非常经典的话: “迭代是人,递归是神!” 来从宏观上对二者进行把握。 从概念上讲,递归就是指程序调用自身的编程思想,即一个函数调用本身;迭代是利用已知的变量值,根据递推公式不断演进得到变量新值得编程思想。 2.递归 递归就是函数自己调用自己。 2.1构成递归需具备的条件: 子问题须与原始问题为同样的事,且更为简单; 2. 不能无限制地调用本身,须有个出口,化简为非递归状况处理。 2.2递归的基本原理 第一: 每一级的函数调用都有自己的变量。 第二: 每一次函数调用都会有一次返回。 第三: 递归函数中,位于递归调用前的语句和各级被调用函数具有相同的执行顺序。 第四: 递归函数中,位于递归调用后的语句的执行顺序和各个被调用函数的顺序相反。 第五: 虽然每一级递归都有自己的变量,但是函数代码并不会得到复制。 2.3递归优缺点 2.4编写一个递归函数 这个递归函数的功能是什么,怎样调用这个函数,即设计好递归函数的返回值和参数列表 什么时候应该结束这个递归,它的边界条件(出口)是什么(边界条件) 在非边界情况时,怎样从第n层转变成第n+1层(递推公式) 例: int f(int n) { //出口 if (n > 0) { return n + f(n - 1); } else { return 0; } } 解析: 具体步骤