我的目标是提供一个类Stacker,它包含一个方法stackSize,它接受一个名为extension的int作为参数。它应该返回最小的长n,使得序列1/2 + 1/4 + 1/6 + 1/8 + ... + ... + 1 / 2n的总和大于或等于扩展名。 / p>
假设我的Rat类(Rational Number)正确地将第一个参数作为分子和第二个参数作为分母加起来两个分数,为什么这个代码对我不起作用的任何想法?
默认的Rat()构造函数只是使Rational数(0/1)和Rat(扩展)构造函数生成Rational数(extension / 1)。
public class StackerTest {
@Test
public void test1()
{
assertEquals(4, Stacker.stackSize(1));
}
}
当我运行测试用例时:
@Test
public void test1()
{
assertEquals(4, Stacker.stackSize(1));
}
在给出IllegalArgumentException
之前它运行了30秒这是Rat类的构造函数以及add方法
/**
* If d is zero, throws an IllegalArgumentException. Otherwise creates the
* rational number n/d
*/
public Rat (int n, int d)
{
// Check parameter restriction
if (d == 0)
{
throw new IllegalArgumentException();
}
// Adjust sign of denominator
num = n;
den = d;
if (den < 0)
{
num = -num;
den = -den;
}
// Zero has a standard representation
if (num == 0)
{
den = 1;
}
// Factor out common terms
int g = gcd(Math.abs(num), den);
num = num / g;
den = den / g;
}
/**
* Returns the sum of this and r
*/
public Rat add (Rat r)
{
int firstNum = this.num*r.den;
int firstDen = this.den*r.den;
int secondNum = r.num*this.den;
int secondDen = r.den*this.den;
Rat x = new Rat(firstNum+secondNum, firstDen);
return x;
}