这不是作业,只是练习。我写的第一种方法是:
写一个静态递归方法,它接受两个名为x和p的int参数,并返回x乘以p次。
我做到了,这是代码:
public static int power(int x, int p)
{
if(p==0)
{
return 1;
}
else
{
int result = x * power(x, p - 1);
return result;
}
}
下一个问题是:
金字塔中的每个等级都是正方形,所以如果有n个等级,则底层有n * n个球,而球的总数只是 (n * n)+(高度为n - 1的金字塔中的球数)。
高度为1的金字塔中只有一个球。编写一个静态递归方法getPyramidCount
,它接受一个表示金字塔中级别数的int参数,并返回总球数。 (使用上面的幂方法来平方数。)
我很沮丧,因为我不知道如何写这个。我知道我想制作另一种包含幂法的方法,但我很无能为力。你能帮帮我吗?在这一点上,我觉得看到某人的代码是我理解的唯一方式。
编辑:不是故意在那里有2。它应该是x!我正在做2到8的力量而忘了放入x而不是2!答案 0 :(得分:3)
不要乘以2
。这是x
* x
p
次。像,
public static int power(int x, int p) {
if (p <= 0) {
return 1;
}
return x * power(x, p - 1);
}
答案 1 :(得分:1)
首先,您的power
方法是错误的。它会计算2 ^ p而不是x ^ p。
更改
int result = 2 * power(x, p - 1);
到
int result = x * power(x, p - 1);
现在,对于金字塔问题,递归是:numBalls(n) = n^2 + numBalls(n-1)
。
因此,该方法如下所示:
public static int numBalls (int n)
{
if (n==1)
return 1;
else
return power(n,2) + numBalls(n-1);
}
答案 2 :(得分:1)
首先这一行:
int result = 2 * power(x, p - 1);
应该是这样的:
int result = x * power(x, p - 1);
但是关于你的金字塔,你的代码只有一个输入,其值为n,返回值如你所说的那样是 2 + pyramid(n-1);