递归算法与迭代算法之间的转换方法

求解极限:

递归算法与迭代算法之间的转换方法,对这个数列极限问题,首先将其转化为易于计算机求极限的表达形式,通过简单的归纳,可以发现该数列项的递推关系式,不妨考虑该数列的第5项,递归算法与迭代算法之间的转换方法的重新表示问题。

若取X1=1,则:递归算法与迭代算法之间的转换方法,

递归算法与迭代算法之间的转换方法

递归算法与迭代算法之间的转换方法

递归算法与迭代算法之间的转换方法,

这实际上获得了X5的另一种数学表达形式,即递推关系式:

X1=1,递归算法与迭代算法之间的转换方法

归纳可知,数列的一般项Xn为

X1=1,递归算法与迭代算法之间的转换方法

据此递推关系式,可方便地设计出计算Xn的递归函数和迭代函数。

//递归函数

double Recursive(int n,int k){

if(k==1){

return 1;//递归出口

}else{

return sqrt(1+(n+2-k)*Recursive(n,k-1));//递归过程

}

}

//迭代函数

double Iterative(int n){

      double x=1;//迭代出自取1

       for(int k=2;k<=n;k++){

              x=sqrt(1+(n+2-k)*x);//迭代

        }

           return x;

}

递归算法与迭代算法之间的转换方法

递归算法与迭代算法之间的转换方法

对比递归函数与迭代函数迭代函数更容易理解一些,计算机科学家L.P.Deutsch曾说过:To iterate is human,to recurse divine(迭代的是人,递归的是神)。递归是计算机所具备的特质(数据存储大,运算速度快),而特别赋予计算机的一项超强功能,但是,人们并不习惯也不擅长用递归来解决问题。

用递归方式思考问题的求解方法,用迭代方法去求解问题。