递归
来源:互联网 发布:word mac版打印 编辑:程序博客网 时间:2024/05/04 06:16
所谓递归,是指程序调用自身,当然,递归不会无休止地调用下去,它必然有一个出口,当满足条件时程序也就结束了,不然的话,那就是死循环了。
对于一个复杂的问题,把原问题分解为若干个相对简单类同的子问题,继续下去直到子问题简单到能够直接求解,也就是说到了递推的出口,这样原问题就有递推得解。
递归的三个条件:
边界条件
递归前进段
递归返回段
当边界条件不满足时,递归前进;当边界条件满足时,递归返回。
使用Java代码求5的阶乘。(5的阶乘=5*4*3*2*1)
public class Test01 {
public static voidmain(String[] args) {
System.out.println(f(5));
}
publicstatic int f(int n) {
if (1 ==n)
return 1;
else
return n*f(n-1);
}
}
对代码的分析:
此题中,按照递归的三个条件来分析:
(1)边界条件:阶乘,乘到最后一个数,即1的时候,返回1,程序执行到底;
(2)递归前进段:当前的参数不等于1的时候,继续调用自身;
(3)递归返回段:从最大的数开始乘,如果当前参数是5,那么就是5*f(4),即5*f(5-1),即n*f(n-1)
递归的几个例子:
http://blog.sina.com.cn/s/blog_764d0ba60101cwo5.html
http://blog.csdn.net/lyjluandy/article/details/7717893/
package com.demo.recursion;
//所谓递归,是指程序调用自身,当然,递归不会无休止地调用下去,它必然有一个出口,当满足条件时程序也就结束了,不然的话,那就是死循环了。
// 提供几个递归实例,有的是从网上找的
// 1、十进制转换二进制
// 2、求1+2+3+...+n的和
// 3、求最大公约数
// 4、求汉诺塔算法
public class Recursion {
}
- 递归
- 递归
- 递归
- 递归
- 递归
- 递归
- 递归
- 递归
- 递归
- 递归
- 递归
- 递归
- 递归
- 递归
- 递归
- 递归
- 递归
- 递归
- acm整除个数
- A. Alyona and copybooks
- Linux-smtp遇见的问题
- C组没做完的题
- 关于linux下位于root组的用户并没有root权限的问题
- 递归
- MYSQL密码管理方式及root密码遗忘处理方式
- org.apache.jasper.JasperException: The absolute uri: http://java.sun.com/jsp/jstl/core cannot be res
- github的基本使用
- mysql集群迁移到swarm(二代)
- 第7章 事件驱动编程:编写一个视频游戏
- 第七章-网络安全设计
- 最大似然估计log likelihood
- springmvc学习记录(一)