递归算法简单练习~
首页 > 后端开发   作者: 凌波  2016-6-8 15:29:01  热度:6155°  字号:   评论:
时间:2016-6-8 15:29:01   热度:6155°  评论:  

        递归算法是把问题转化为规模缩小了的同类问题的子问题。然后递归调用函数(或过程)来表示问题的解。

一个过程(或函数)直接或间接调用自己本身,这种过程(或函数)叫递归过程(或函数).     

递归算法解决问题的特点:

(1) 递归就是在过程或函数里调用自身。

(2) 在使用递归策略时,必须有一个明确的递归结束条件,称为递归出口。

(3) 递归算法解题通常显得很简洁,但递归算法解题的运行效率较低。所以一般不提倡用递归算法设计程序。

(4) 在递归调用的过程当中系统为每一层的返回点、局部量等开辟了栈来存储。递归次数过多容易造成栈溢出等。所以一般不提倡用递归算法设计程序。

知道其概念后,通过一个小题用递归后非递归实现:

一个数组:1,1,2,3,5,8,13,21...+m,求第30位数是多少?

//递归
        public static int Test1(int a,int b,int c,int d)
        {
            int s1= a;
            int s2 = b;
            int s=c;
            int index=d;
           while(true)
           {
               s = s1 + s2;
               index++;
               s1 = s2;
               s2 = s;
               if (index == 30)
               {
                   break;
               }
               else
               {
                   Test1(s1,s2,s,index);
               }
           }
           return s;
        }
//非递归
        public static int Test2()
        {
            int s1 = 1;
            int s2 = 1;
            int s = 0;
            for (int i = 3; i < 31; i++)
            {
                 s = s1 + s2;
                 s1 = s2;
                 s2 = s;
            }
            return s;
        }



 您阅读这篇文章共花了: 
捐赠支持:如果觉得这篇文章对您有帮助,请“扫一扫”鼓励作者!
二维码加载中...
本文作者: 凌波      文章标题: 递归算法简单练习~
本文地址:http://www.lingbohome.com/Article/Post/21
版权声明:若无注明,本文皆为“凌波小屋”原创,转载请保留文章出处。

发表吐槽

返回顶部    首页    大事记   动态    捐赠支持    后花园   
版权所有:Copyright ©2016 凌波小屋 All rights All rights reserved    站长: 凌波       程序:.Net Mvc   鄂ICP备 15003636号-1