【实验5 通用累积函数】

该博客探讨了如何设计通用的求和函数,通过模板方法模式和行为参数化实现。内容包括:1) 传统模板方法模式的解释与应用;2) 通过多重策略重构避免类型爆炸;3) 求积与累积函数的概念及其在计算定积分中的应用;4) 如何在累积函数中添加过滤器功能。实验目的是理解模板方法模式和行为参数化,并设计通用求和和累积函数。
摘要由CSDN通过智能技术生成

关键词: 实验4 求和方法的一般化 , 模板方法模式,通用函数,高阶函数

  • 实验目的:设计通用的求和函数,理解什么是模板方法模式以及与行为参数化的关系。
  • 实验内容:考虑数列或级数求和(或求近似值)的若干例子,并设计通用的求和函数。
    1. 求[a,b]之间自然数的和;//
    2. 求[a,b]之间自然数的立方的和
    3. 求调和级数前n项的和,其中调和级数为H(n)= 1/1 + 1/2 + 1/3 + 1/4 + ... + 1/n
    4. 求Pi,其中pi/8  = 1/(1*3)+1/(5*7)+1/(9*11)+...
    5. 求函数的定积分

起点

Demo中搜集了若干求和例子的代码,代码中按照[SICP 1.3.1]的命名方式,如sum_integers求代数和,sum_cubes求立方数的代数和。你的任务是思考从中提取通用的骨架。

package chap2.templateMethod.sum;
import static yqj2065.util.Print.pln;

public class Demo{ 
    //1、若干的函数拥有相似的代码结构
    public static void test() {
        pln("代数和" + sum_integers(1, 10));
        pln("pi=" + pi(10000));
        
    } 
    
    //求[a,b]之间自然数的和//
    public static int sum_integers(int a, int b) {
        int sum = 0;
        for (int i = a; i <= b; i++) {
            sum += i;
        }
        return sum;
    }

    //立方数的代数和//
    private static double cube(int x) {
        return x * x * x;
    }

    public static int sum_cubes(int a, int b) {
        int sum = 0;
        for (int i = a; i <= b; i++) {
            sum += cube(i);
        }
        return sum;
    }

    /**
     * 求Pi,the sum of a sequence of terms in the series
     * 1/(1*3)+1/(5*7)+1/(9*11)+...
     *
     * @param x
     * @return
     */
    private  static double item(int x) {
        return 1.
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值