递归算法简单练习~
时间: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
版权声明:若无注明,本文皆为“凌波小屋”原创,转载请保留文章出处。
本文地址:http://www.lingbohome.com/Article/Post/21
版权声明:若无注明,本文皆为“凌波小屋”原创,转载请保留文章出处。
发表吐槽