zoukankan      html  css  js  c++  java
  • 递归方法(recursion)

    • 递归:指在当前方法内调用自己的这种现象。

    • 递归的分类:

      • 递归分为两种,直接递归和间接递归。

      • 直接递归称为方法自身调用自己。

      • 间接递归可以A方法调用B方法,B方法调用C方法,C方法调用A方法。

    • 注意事项

      • 递归一定要有条件限定,保证递归能够停止下来,否则会发生栈内存溢出。

      • 在递归中

        #### 语法案例演示一:计算1-100之间所有自然数的和
        
        ```java
        public class RecursionMethod1{
            public static void main(String[] args) {
                Count c = new Count();
                
                int sum = c.sum(100);
                System.out.println("1-100的和:" + sum);
            }
        }
        class Count{
            public int sum(int n){
                if(n == 1){
                    return 1;
                }else{
                    return n + sum(n-1);
                }
            }
        }
        ```
        求n!
        public class RecursionMethod2{
            public static void main(String[] args) {
                Count c = new Count();
                
                int jieCheng = c.jieCheng(10);
                System.out.println("10的阶乘是:" + jieCheng);
            }
        }
        class Count{
            public int jieCheng(int n){
                if(n <= 1){
                    return 1;
                }else{
                    return n * jieCheng(n-1);
                }
            }
        }
        #### 计算斐波那契数列(Fibonacci)的第n个值
        
        规律:一个数等于前两个数之和,
        
        ​    f(0) =1,
        
        ​    f(1) = 1,
        
        ​    f(2) = f(0) + f(1) =2,
        
        ​    f(3) = f(1) + f(2) = 3, 
        
        ​    f(4) = f(2) + f(3) = 5
        
        ​    ...
        
        ​    f(n) = f(n-2) + f(n-1);
        
        
        public class RecursionMethod3{
            public static void main(String[] args) {
                Count c = new Count();
                
                System.out.println("f(10):" + c.f(10));
                System.out.println("f方法被调用的总次数:" + c.total);
            }
        }
        class Count{
            int total = 0;
            public int f(int n){
                total++;
                if(n <= 1){
                    return 1;
                }else{
                    return f(n-2) + f(n-1);
                }
            }
        }

         

  • 相关阅读:
    [Python 多线程] Concurrent (十五)
    [Python 多线程] GIL全局解释器锁 (十三)
    [Python 多线程] Semaphore、BounedeSemaphore (十二)
    自定义HandlerMethodArgumentResolver参数解析器和源码分析
    Dubbo分布式日志追踪
    kafka的分区分配策略
    深入剖析kafka架构内部原理
    kafka partition(分区)与 group
    Kafka消费组(consumer group)
    kafka存储机制以及offset
  • 原文地址:https://www.cnblogs.com/panyizuoshan/p/11398352.html
Copyright © 2011-2022 走看看