java递归算法分析
来源:互联网 发布:游族网络林奇2017 编辑:程序博客网 时间:2024/05/21 08:49
递归算法分析:就是把复杂的问题分解为若干个相对简单的子问题,一直分解下去,直到子问题有答案为止,也就是说到了递推的出口。
递归算法要注意的两点:
(1) 递归就是在方法里调用自己;
(2) 在使用递归算法时,必须要有一个明确的递归结束条件,称为递归出口。
先看一个简单的例子,求从1加到5的和,代码如下:
n=5时,执行sum(5)方法,返回的结果为:5 + sum(4)
n=4时,执行sum(4)方法,返回的结果为:4 + sum(3)
n=3时,执行sum(3)方法,返回的结果为:3 + sum(2)
n=2时,执行sum(2)方法,返回的结果为:2 + sum(1)
n=1时,执行sum(1)方法,返回的结果为:1
再向上返回,依次执行:
2+1
3+(2+1)
4+(3+2+1)
5+(4+3+2+1) = 15
思路应该是这样的:
要知道从1加到5的和,先得知道从1加到4的和,即:5+sum(4)
要知道从1加到4的和,先得知道从1加到3的和,即:4+sum(3)
要知道从1加到3的和,先得知道从1加到2的和,即:3+sum(2)
要知道从1加到2的和,先得知道从1加到1的和,即:2+sum(1)
从而很容易看出,递归的出口为1也就是sum(1)的值为1
再看一个例子,求10的阶乘,代码如下:
递归算法要注意的两点:
(1) 递归就是在方法里调用自己;
(2) 在使用递归算法时,必须要有一个明确的递归结束条件,称为递归出口。
先看一个简单的例子,求从1加到5的和,代码如下:
package com.sum;
public class RecursionTest {/** * 求从1加到n的和 */public static int sum(int n){if(n == 1){return 1;}else{return n + sum(n-1);}}public static void main(String[] args) {System.out.println(sum(5));}}先分析一下执行的流程:
n=5时,执行sum(5)方法,返回的结果为:5 + sum(4)
n=4时,执行sum(4)方法,返回的结果为:4 + sum(3)
n=3时,执行sum(3)方法,返回的结果为:3 + sum(2)
n=2时,执行sum(2)方法,返回的结果为:2 + sum(1)
n=1时,执行sum(1)方法,返回的结果为:1
再向上返回,依次执行:
2+1
3+(2+1)
4+(3+2+1)
5+(4+3+2+1) = 15
思路应该是这样的:
要知道从1加到5的和,先得知道从1加到4的和,即:5+sum(4)
要知道从1加到4的和,先得知道从1加到3的和,即:4+sum(3)
要知道从1加到3的和,先得知道从1加到2的和,即:3+sum(2)
要知道从1加到2的和,先得知道从1加到1的和,即:2+sum(1)
从而很容易看出,递归的出口为1也就是sum(1)的值为1
再看一个例子,求10的阶乘,代码如下:
package com.test;public class RecursionTest {/** * 求n的阶乘 */public static int multiply(int n) {if(n == 1){return 1;}else{return n * multiply(n - 1);}}public static void main(String[] args) {System.out.println(multiply(10));}}思路跟上面是一样。
0 0
- java递归算法分析
- Java编程算法基础----递归原理分析
- java数据结构与算法分析之递归
- Java数据结构与算法分析《六》递归
- java(22)------java递归算法实例和分析
- 数据结构:递归 算法分析
- 递归算法详细分析
- 递归算法分析-分享
- 递归算法详细分析
- 递归算法详细分析
- 递归算法分析
- 递归算法详细分析
- 递归算法详细分析
- 递归算法详细分析
- 递归算法详细分析
- 递归算法详细分析
- 递归算法详细分析
- 递归算法案例分析
- 【Android学习】Android数据的四种储存方式(4)--ContentProvider
- 如何提高阅读效率
- 写给学习H.264(运动估计)的朋友们——流川(注:节选)
- 快速阅读的九种方法
- SRM 612 D2L3:PowersOfTwo,dp
- java递归算法分析
- PO-J1125 Stockbroker Grapevine 最短路径
- C# WinForm 实现文件的拖入和拖出(拖拽操作)
- PHP可变变量和可变函数
- 天才的秘密……英语成功法则
- 题目1515:打印1到最大的N位数
- ecshop商品详情页添加多个可在后台编辑的商品描述分类
- 成长记忆
- 物联网开放平台模式--2种用户