算法——递归算法
来源:互联网 发布:微屏软件 编辑:程序博客网 时间:2024/05/19 00:43
@Author:云都小生
概念
递归算法的概念,就是通过不断地调用自身,最终达到解决问题的目的。
递归有两个点需要注意:
1. 要不断的调用自身;
2. 这个递归要有出口,不能成为死循环;
看下面的例子。
用递归解决阶乘
很多介绍递归算法的,都会用递归来做一个题目:计算一个数的阶层。
例如:计算5的阶层,!5 = 5 X 4 X 3 X 2 X 1
用递归来实现:
public class Test{ public static void main(String[] args) { System.out.println(recursively(3)); } public static int recursively(int num) { if(num <= 1) { return 1; } else { return num*recursively(num-1); } }}
在recursively()方法中,我们可以看到else的代码块,不断的穷举所有情况,不断的递归下去。
num = 33*(num-1)3*(2*(num-1))3*(2*(1))
最后把结果一层一层return。需要知道的是,用递归解决阶乘问题,效率实在是太低了。
用递归计算斐波那契数列
斐波那契数列是这样的,第一个数是1,第二个数是1,从第三个数开始都是前两个数的合。
1 1 2 3 5 8 11 19····
用递归实现:
public class Test{ public static void main(String[] args) { Scanner input = new Scanner(System.in); int num; System.out.println("你想要知道第几个斐波那契数?"); num = input.nextInt(); System.out.println("第" + num + "个斐波那契数是:" + fibonacci(num)); } public static int fibonacci(int num) { if(num == 1 || num == 2) { return 1; } else { return fibonacci(num-1)+fibonacci(num-2); } }}
记住递归的概念,递归就是不断的调用自身,直到条件满足的时候,就开始一层一层反馈结果,以达到解决问题的目的。
2017/10/9 16:30:37 @Author:云都小生
阅读全文
0 0
- 算法——递归算法
- 算法——递归
- 算法——递归
- 算法——递归
- 常用算法—递归
- PHP算法——递归算法
- 递归算法终极理解—用人脑理解递归算法
- 递归算法—输入字母逆序输出&汉诺塔递归算法
- 常用算法——递归
- C++算法——递归
- 递归算法——Hannoi
- 递归算法——妙
- 算法入门——递归
- 经典算法——递归
- 【数据结构】递归算法—汉诺塔
- C#算法—递归详解
- 典型递归算法——常见hanoi算法之扩展
- 算法专题——递归算法(转载)
- SSL证书申请
- 恨铁不成钢 苹果Siri为何敌不过其它智能助理?
- 同时使用@IdClass @ManyToOne碰到的一个问题
- jdk--ClassLoader
- Android 8.0 启动ServiceManager
- 算法——递归算法
- resteasy 数据校验之Hibernate validation 国际化问题
- java.net.BindException: Address already in use: bind异常处理方法
- php作业01
- opencart 2.3全面伪静态
- 这里简单介绍一个自己写的检测某个进程是否存在的bash小脚本
- 深度学习和自然语言处理的应用和脉络1-基础
- mysql 导入数据库
- qt learning