
Java:递归
发布日期:2021-05-06 07:32:30
浏览次数:27
分类:精选文章
本文共 1486 字,大约阅读时间需要 4 分钟。
递归
一、概述
定义:递归是在函数的定义中使用函数自身的方法
递归是一个通过提取重复逻辑来减少代码量的一个很好的方法,很多复杂问题可以通过递归可以轻松实现,这是因为这些问都可以被分解成逻辑相同的若干小问题,大而化之,控制好结束条件,问题就可以迎刃而解。
递归的三要素:
1)明确递归终止条件 2)给出递归终止时的解决办法 3)提取重复的逻辑,缩小问题的规模二、实例代码
1.二分查找
代码:
public static int binarySearch(int [] list,int key){ int low = 0; int high = list.length-1; return binarySearchBrRecur(list,key,low,high); } public static int binarySearchBrRecur(int []list,int key,int low,int high){ if(low<=high){ int middle = (low + high) >>1 ; //>>1 == /2 if(list[middle] == key) return middle; else if(list[middle] > key){ return binarySearchBrRecur(list,key,low ,middle-1); }else { return binarySearchBrRecur(list,key,middle+1,high); } } return -1; }
2.斐波那契数列(Fibonacci)
代码:
public static int fibonacci(int n){ return fibonacciRecur(n,1,1); } public static int fibonacciRecur(int n,int first,int second){ if(n ==1) return first; else return fibonacciRecur(n-1,second,first+second);//1,1,2,3,5 }
2.阶乘
代码:
public static long factorialCricle(int n){ long sum = 1; while(n >1){ sum *= n; n--; } return sum; } public static long factorialByRecur(int n){ if(n ==1) return 1; //递归终止条件和终止的处理办法 else{ return n * factorialByRecur(n-1); } }
发表评论
最新留言
路过按个爪印,很不错,赞一个!
[***.219.124.196]2025年04月03日 14时46分11秒
关于作者

喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!
推荐文章
常用正则表达式
2019-03-04
Java判断字符串是否为金额
2019-03-04
angr学习笔记(7)(malloc地址单元符号化)
2019-03-04
结构型设计在工作中的一些经验总结
2019-03-04
OpenAI Gym简介及初级实例
2019-03-04
Java面向对象
2019-03-04
JAVA带标签的break和continue
2019-03-04
(C++11/14/17学习笔记):线程启动、结束,创建线程多法、join,detach
2019-03-04
HTML 和 CSS 简单实现注册页面
2019-03-04
875 爱吃香蕉的珂珂(二分查找)
2019-03-04
Dijkstra算法的总结
2019-03-04
Vue实现选项卡功能
2019-03-04
vue中接收后台的图片验证码并显示
2019-03-04
趣谈win10常用快捷键
2019-03-04
王爽 《汇编语言》 读书笔记 三 寄存器(内存访问)
2019-03-04
JDK 内置的多线程协作工具类的使用场景
2019-03-05
Java 中哪些对象可以获取类对象
2019-03-05
11.2.6 时间值的小数秒
2019-03-05