zoukankan      html  css  js  c++  java
  • [java基础]递归调用

    递归调用:通过调用或间接调用程序自身

    递归调用最重要的一点是,一定要有个头,要是没有头,一直调用下去,就成了死循环了.

    代码示例:

    /**
     * 递归调用代码示例<br>
     * 说明:一个方法,自己直接或间接的调用自己.<br>
     * @author 冲出地球
     * */
    public class Recursion {
        
        /**
         * 示例程序:阶乘<br>
         * 一个数的阶乘,就是从1一直乘到那个数<br>
         * 示例:2! = 1*2  5! = 1*2*3*4*5<br>
         * 分解:5! = 5*4! = 5*4*3! = 5*4*3*2! = 5*4*3*2*1<br>
         * @return 返回i和i-1的阶乘的乘积,也就是i*(i-1)!
         * */
        private static int getFactorial(int i){
            if (i == 1) {
                return 1;
            } else {
                return i*getFactorial(i-1);
            }
        }
        
        /**
         * 示例程序:累加<br>
         * 随便指定一个数,求从1累加到这个数的和<br>
         * 示例: 5的累加= 5+4+3+2+1<br>
         * 分解: 5的累加= 5+4的累加 = 5+4+3的累加 = ... = 5+4+3+2+1<br>
         * @author 冲出地球
         * @param i 累加到的那个数
         * @see Recursion#getSumByCirculation(int) 累加的for循环方法
         * */
        private static int getSumByRecursion(int i){
            if (i == 1) {
                return 1;
            } else {
                return i + getSumByRecursion(i-1);
            }
        }
        
        /**
         * 累加的for循环方法<br>
         * @author 冲出地球
         * @param i 累加到的那个数
         * @see Recursion#getSumByRecursion(int) 累加的递归调用方法
         * */
        private static int getSumByCirculation(int i){
            int result = 0;
            for (int j = 1; j <= i ;j++){
                result += j;
            }
            return result;
        }
        
        /**
         * 主程序入口
         * */
        public static void main(String[] args) {
            //求5的阶乘
            int factorial5 = getFactorial(5);
            System.out.println("5的阶乘是:" + factorial5);
            //利用for循环获取100的累加
            int sumByCirculation100 = getSumByCirculation(100);
            System.out.println("利用for循环计算出的100的累加的值是:"+sumByCirculation100);
            //利用递归调用获取100的累加
            int sumByRecursion100 = getSumByRecursion(100);
            System.out.println("利用递归调用计算出的100的累加的值是:"+sumByRecursion100);
        }
        
    }
  • 相关阅读:
    Golang之排序算法
    Golang之一个简单的聊天机器人
    golang之流程控制(注意点)
    golang之指针
    vs code中自动添加注释插件koroFileHeader
    stack栈、heap堆的说明图
    c语言中的数据类型的最大最小值
    数组问题:a与&a有的区别
    STM32F10x之NVIC
    大小端的另一种测试方法
  • 原文地址:https://www.cnblogs.com/zhengchenhui/p/6642021.html
Copyright © 2011-2022 走看看