zoukankan      html  css  js  c++  java
  • 数字阶层和...递归算法

    题目:求1+2!+3!+…+20!和
    分析:双重for循环很简单。
    重点分析下递归方法:当我们去求20!时可以理解为20*19!,在理解为20*19*18!….最后变为20*19*18*…*1!;1的阶乘和为1。从这里可以看出递归的现象,定义递归开始和终止条件即完成了


    package com.math.forth;
    
    /***
     * 求1+2!+3!+...+20!和 
     * 分析:双重for循环很简单。
     * 重点分析下递归方法:当我们去求20!时可以理解为20*19!,在理解为20*19*18!....最后变为20*19*18*...*1!;1的阶乘和为1。
     * 从这里可以看出递归的现象,定义递归开始和终止条件便结束。
     * 
     * @author wql
     *
     */
    public class Math13 {
    
        public static void main(String[] args) {
            int sum = method();
            System.out.println(sum);
    
            // ----------------递归方法--------------------
            int sum2 = 0;
            //递归得到只是单个数字的阶乘和,题目要得到1到20所有数字阶乘和的和
            for (int i = 1; i <= 20; i++) {
                sum2 += method2(i);
            }
            System.out.println(sum2);
        }
    
        /**
         * 递归方法:只是求一个数的阶乘和
         * 
         * @return
         */
        private static int method2(int num) {
            if (num == 1) {
                return 1; // 递归结束
            } else {
                return method2(num - 1) * num;// 递归开始
            }
        }
    
        /**
         * for循环方法
         * 
         * @return
         */
        public static int method() {
            int sum = 0;
            for (int i = 1; i <= 20; i++) {
                int temp = 1;
                for (int j = i; j >= 1; j--) {
                    temp *= j;
                }
                sum += temp;
            }
            return sum;
        }
    
    }
    

    这里写图片描述

  • 相关阅读:
    CF666E. Forensic Examination
    bzoj1396 识别子串
    bzoj2839 集合计数
    unknown
    Hibernate中一级缓存和二级缓存
    亲, 我们来再重申一遍"=="和"equals的区别
    BigDecimal类
    序列化详解
    利用简单的参数传递来实现单条查询的easyui-datagrid
    Oracl 动态执行表不可访问,本会话的自动统计被禁止
  • 原文地址:https://www.cnblogs.com/wangqilong/p/9417532.html
Copyright © 2011-2022 走看看