根据以下代码完成相应要求。写一个ArithProgression继承自该类的Progression,并通过将级数的前一个元素与级数d的常数差相加来创建等差数。该类必须有一个默认构造public class Progression { protected long first; 受保护的长狗;进展(){ cur = first = 0; } protected long firstValue() { cur = first; 返回当前;} protected long nextValue() { return ++cur; } public void printProgression(int n) { System.out.print(firstValue()); for (int i = 2; i <= n; i++) System.out.print(" " + nextValue()); System.out.println(); } }
时间: 2024-01-18 08:02:27 浏览: 23
以下是ArithProgression类的实现,它继承自Progression类:
public class ArithProgression extends Progression {
protected long increment;
// 默认构造函数,设置increment为1
public ArithProgression() {
this(1);
}
// 构造函数,接收一个increment参数
public ArithProgression(long increment) {
this.increment = increment;
}
// 重写nextValue方法,返回前一个元素加上increment
protected long nextValue() {
cur += increment;
return cur;
}
}
ArithProgression类重写了nextValue方法,使得它返回前一个元素加上increment,从而创建等差数。这个increment参数可以在构造函数中设置,默认值为1。
相关问题
java数字序列是一系列值,其中每个元素的值取决于一个或多个先前的成员。 例如,在等差级数中,下一个元素的值由加法确定,而在几何级数中,由乘法确定。 无论哪种情况,序列都必须有一种方法来确定序列的第一个成员,以及一种方法来确定当前元素。 给定一个进步班。 它定义了数字序列的“公共”字段和方法。 Progression 类包含 Progression() 方法,该方法是一个构造函数,用于在创建该类的新对象时设置类实例变量的初始值。 Progression 类是较低类继承的通用超类。 根据以下内容创建从 Progression 类继承的类 编写一个 ArithProgression 类,它继承自 Progression 类,并通过添加级数的前一个元素和级数的常数差 d 来创建算术级数。 该类必须有一个默认构造函数,它分配序列 2 的第一个值,以及一个参数构造函数,它取决于级数的第一个成员和级数的差异。 编写一个 SquareProgression 类,它继承自 Progression 类并创建一个序列,其成员值为序列前两个成员之和的平方。 该类必须有一个为序列的前两个值 2 和 200 赋值的默认构造函数,以及一个为序列的第一对赋值的参数构造函数。 创建一个 TesterProgression 类,您可以在其中演示所创建类的工作。
以下是 ArithProgression 类的代码实现:
```java
public class ArithProgression extends Progression {
protected long increment;
public ArithProgression() {
this(1);
}
public ArithProgression(long step) {
increment = step;
}
protected void advance() {
current += increment;
}
}
```
在这个类中,我们定义了一个 increment 实例变量,它表示级数的常数差。我们还实现了一个默认构造函数和一个带有一个参数的构造函数,它们都设置了序列的第一个成员为 2。advance() 方法按照常数差增加当前元素的值。
接下来是 SquareProgression 类的代码实现:
```java
public class SquareProgression extends Progression {
protected long prev;
public SquareProgression() {
this(2, 200);
}
public SquareProgression(long first, long second) {
super(first);
prev = second - first;
}
protected void advance() {
long temp = prev;
prev = current;
current = (prev + temp) * (prev + temp);
}
}
```
在这个类中,我们定义了一个 prev 实例变量,它表示序列的前一个元素。在构造函数中,我们设置了序列的前两个成员的值,并将 prev 设置为这两个值之间的差。advance() 方法计算当前元素的值,该值是前两个元素之和的平方。
最后是 TesterProgression 类的代码实现:
```java
public class TesterProgression {
public static void main(String[] args) {
Progression prog;
// Test ArithProgression
System.out.print("Arithmetic progression with default increment: ");
prog = new ArithProgression();
prog.printProgression(10);
System.out.print("Arithmetic progression with increment 5: ");
prog = new ArithProgression(5);
prog.printProgression(10);
// Test SquareProgression
System.out.print("Square progression with default start values: ");
prog = new SquareProgression();
prog.printProgression(10);
System.out.print("Square progression with start values 2 and 5: ");
prog = new SquareProgression(2, 5);
prog.printProgression(10);
}
}
```
在这个类中,我们创建了一个 Progression 对象并测试了 ArithProgression 和 SquareProgression 类。我们使用 printProgression() 方法打印序列的前 10 个成员。您可以通过运行 TesterProgression 类来测试这些类的实现。
帮我用python写一个超额累进计算的代码
以下是一个简单的超额累进计算代码:
```
def excess_progression(n, a, b):
sum = 0
for i in range(1, n+1):
if i <= 10:
sum += a
else:
sum += b
return sum
# 测试
print(excess_progression(15, 5, 10))
```
函数`excess_progression`接受三个参数:`n`表示计算的项数,`a`表示前10项的公差,`b`表示第11项及以后的公差。该函数通过循环计算出超额累进数列的前`n`项并返回它们的和。
以上代码仅供参考,实际应用中可能需要根据具体问题进行修改。