首页 > 技术文章 > Java方法03--递归讲解

studyhao1999 2021-12-04 21:07 原文

Java方法03--递归讲解

递归

  • A方法调用B方法,我们很容易理解!

  • 递归就是:A方法调用A方法!就是自己调用自己

    package com.studyhao1999.method;
    
    public class Demo05 {
        public static void main(String[] args) {
            Demo05 test = new Demo05();
            test.test();
    
        }
        public void test(){
            test();
        }
    }
    

    运行结果:

    image-20211204205021567

  • 利用递归可以用简单的程序来解决一些复杂的问题。它通常把一个大型复杂的问题层层转化为一个与原问题相似的规模较小的问题来求解,递归策略只需少量的程序就可描述出解题过程所需要的多次重复计算,大大地减少了程序的代码量。递归的能力在于用有限的语句来定义对象的无限集合。(栈!!!)

  • 递归结构包括两个部分:

    • 递归头:什么时候不调用自身方法。如果没有头,将陷入死循环。
    • 递归体:什么时候需要调用自身方法。
  • 递归:

    • 边界条件
    • 前阶段
    • 返回阶段 n*(n-1)
  • 小计算可以用递归,大计算尽量不要用,影响机器性能

  • 例子:计算阶乘

    package com.studyhao1999.method;
    
    public class Demo06 {
        //
        public static void main(String[] args) {
            System.out.println(f(100));
        }
        //1!
        // 2! 2*f(1)
        // 3! 3*f(2)(2*f(1))
        public static int f(int n){
            if(n==1){
                return 1;
            }else{
                return n*f(n-1);
            }
        }
    }
    
    • 运行流程图;

      image-20211204210506302

推荐阅读