Java编程算法基础----递归与循环关系
来源:互联网 发布:菜鸟学java 编辑:程序博客网 时间:2024/05/20 10:15
理论上,任何循环都可以用递归来代替。有些函数式语言甚至不提供循环结构,而仅仅使用递归。
如可以让其他人打印上半部分,我打印中间部分,其他人打印下半部分
上面这一个代码我感觉类似于二叉树的遍历了, 一个算法你可能碰巧做对,但是用语言描述出来,让别人理解你的想法有一定的难度= =
当然,递归也可以通过循环和自己定义的栈结构来模拟。
递归与数学上的递推公式有点相似,相同点在于都是在寻找相似性
package NO4;public class Test03 { static void f(int begin, int end){//递归输出0-9if(begin > end)return;f(begin, end-1);System.out.println(end); //}public static void main(String[] args) {// TODO Auto-generated method stub /* 循环输出0-9for(int i = 0; i < 10;i++) System.out.println(i);*/f(0, 9);}}关于递归问题的分解不是唯一的,此处是先做最后一步的输出(end),然后把其他步骤交给后面进行
如我可以先打印第一步,后续的工作交给其他进行
package NO4;public class Test04 {static void f(int begin, int end){ if(begin>end) return; System.out.println(begin);//先打印第一步,后续工作交给后面进行f(begin+1, end);}public static void main(String[] args) {// TODO Auto-generated method stubf(0, 9);}}如我可以先打印begin和end,中间的工作可以交给其他人
package NO4;public class Test05 {static void f(int begin, int end){if(begin > end)return; System.out.println(begin); f(begin+1, end-1);if(begin != end )//如果begin等于end则不重复打印 System.out.println(end);}public static void main(String[] args) {// TODO Auto-generated methodf(0, 21);}}
如可以让其他人打印上半部分,我打印中间部分,其他人打印下半部分
package NO4;public class Test09 {static void f(int begin, int end){ int middle = (int) Math.floor((begin + end ) / 2); //System.out.println("ok" + middle); if(begin == end){ System.out.println(begin); return; } if((end - begin + 1 ) % 2 != 0 )//<span style="font-family: Verdana, Arial, sans-serif;">begin-end所表示的范围长度是奇数</span> f(begin, middle - 1); else f(begin, middle); if((end-begin +1) % 2 != 0) //begin-end所表示的范围长度是奇数 System.out.println(middle); f(middle + 1, end); }public static void main(String[] args) {// TODO Auto-generated method f(1,10);}}
上面这一个代码我感觉类似于二叉树的遍历了, 一个算法你可能碰巧做对,但是用语言描述出来,让别人理解你的想法有一定的难度= =
0 0
- Java编程算法基础----递归与循环关系
- Java编程算法基础----递归原理分析
- Java编程算法基础---- 构造递归思想
- Java编程算法基础---小数循环节
- Java 算法基础 -递归
- Java基础--递归算法
- java之递归循环与递归
- Java编程算法基础--加密与解密
- Java编程算法基础---组合与聚合
- Java基础--递归算法(递归结构)
- 剑指offer 算法 (递归与循环)
- Java基础_递归算法
- JAVA:基础递归算法大杂烩
- java基础递归算法复习
- 【java基础 4】树形结构数据呈现的非递归算法(循环)实现
- 04-02递归与循环关系_重写代码
- 【java解惑】递归异常与有限循环
- 递归和循环的关系
- strcpy函数实现
- Unique Binary Search Trees
- 自定义异常类
- 证明0.999999...(无限循环)=1 的一种搞siao非主流方法。。。
- Android手动添加布局
- Java编程算法基础----递归与循环关系
- javaweb之Maven项目管理工具学习
- 【日志】新手对接口的自我理解(帮忙指正,谢谢)
- Unique Paths
- nginx在linux下的安装
- 【Java.Web】Servlet —— 请求的重定向
- Bull Math(java大数相乘)
- FEDERATED存储引擎的使用,如何开启FEDERATED,FEDERATED Support NO?
- 学习了这么久,资料整理了一大堆,马上毕业了,开始写写博客,以后慢慢看。。