zoukankan      html  css  js  c++  java
  • 递归算法

    递归算法是方法内调用自身;

    递归算法必须要有个明确的条件作为算法结束的出口,被称为递归出口;

    递归算法的不足:在递归调用的过程中系统为每一层的返回点、局部量等开辟了栈来存储。递归次数过多容易造成栈溢出等,所以一般不提倡用递归算法设计程序。

    递归算法有个很重要的就是递归算法的出口条件,满足出口条件,就不递归了。

    举个栗子:代码如下:

    class Factorial {
    //递归函数
    int fact(int n){
    if(n==1){
    return 1;
    }else{
    return fact(n-1)*n;
    }
    }
    }

    public class TestFactorial {
    public static void main(String[] args) {
    Factorial factorial= new Factorial();
    System.out.println("factorial(10)="+factorial.fact(10));
    }
    }
    结果截图:

    再举个栗子:这是个移动盘子的实验
    public class Hanio {
    public static void main(String[] args){
    int i=3;
    char a ='A',b='B',c='C';
    hanio(i,a,b,c);
    }

    public static void hanio(int n,char a,char b,char c){
    if(n==1)
    System.out.println("移动"+n+"号盘子从"+a+"到"+c);
    else{
    hanio(n-1,a,c,b);//把上面n-1个盘子从a借助b搬到c
    System.out.println("移动"+n+"号盘子从"+a+"到"+c);//紧接着直接把n搬动c
    hanio(n-1,b,a,c);//再把b上的n-1个盘子借助a搬到c
    }
    }
    }

    截图:

    
    
    
  • 相关阅读:
    【目录】processing
    【目录】Qt
    【目录】python
    【目录】linux
    【目录】多线程
    【目录】Leetcode
    【leetcode】Restore IP Addresses (middle)
    linux c编程訪问数据库
    『Spring.NET+NHibernate+泛型』框架搭建之Model(二)
    hdu1316(大数的斐波那契数)
  • 原文地址:https://www.cnblogs.com/GGboy-wu/p/9652269.html
Copyright © 2011-2022 走看看