Java 递归…I';我卡住了

Java 递归…I';我卡住了,java,recursion,Java,Recursion,这不是作业,只是练习。我的第一个写作方法是: 编写一个静态递归方法power,它接受两个名为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; }

这不是作业,只是练习。我的第一个写作方法是:

编写一个静态递归方法power,它接受两个名为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参数,并返回球的总数。(使用上面的幂法计算平方数。)

我很沮丧,因为我不知道该怎么写。我知道我想做另一种方法,包括幂法,但我太笨了。你能帮我吗?在这一点上,我觉得看到别人的代码是我理解的唯一途径


编辑:我不想在那里有两个。应该是x!我做的是2到8次方,但忘了输入x而不是2

不要乘以
2
。这是
x
*
x
p
倍。像

public static int power(int x, int p) {
    if (p <= 0) {
        return 1;
    }
    return x * power(x, p - 1);
}
公共静态整数功率(整数x,整数p){

如果(p不乘以
2
。它是
x
*
x
p
倍。比如

public static int power(int x, int p) {
    if (p <= 0) {
        return 1;
    }
    return x * power(x, p - 1);
}
公共静态整数功率(整数x,整数p){

如果(p首先,你的
power
方法是错误的。它将计算2^p而不是x^p

改变

int result = 2 * 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);
}

首先,你的
power
方法是错误的。它将计算2^p而不是x^p

改变

int result = 2 * 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);
}

首先,这一行:

int result = 2 * power(x, p - 1);
应该是这样的:

int result = x * power(x, p - 1);

但是关于金字塔,您的代码只有一个输入值为n,返回值为n2+金字塔(n-1);

首先:

int result = 2 * power(x, p - 1);
应该是这样的:

int result = x * power(x, p - 1);

但是关于金字塔,您的代码只有一个输入值为n,返回值为n2+金字塔(n-1)

您的代码无法解决指定的问题……正如您已经被告知的那样,您的power方法是错误的。至于金字塔问题,也许您应该先在中了解一下,然后再想出一个主意。如果您真的想尝试递归,请尝试编写一个扫描目录及其所有子目录的方法目录(及其所有子目录等)对于名称以特定字符串开头的文件。这是一个非常容易可视化的递归应用程序,因此易于理解。感谢您提供的信息!我正在阅读即将到来的实验室,大约一周后,我将不得不对目录和文件使用递归。您的代码无法解决指定的问题……您的power方法是错误的,如下所示你已经被告知了。关于金字塔问题,也许你应该先读一读,然后你可以想出一个主意。如果你真的想练习递归,试着写一个扫描目录及其所有子目录(及其所有子目录等)的方法对于名称以特定字符串开头的文件。这是一个非常容易可视化的递归应用程序,因此易于理解。感谢您提供的信息!我正在阅读一个即将到来的实验室,我将在一周左右的时间内对目录和文件使用递归。我知道此网站上的用户不喜欢其他人分发代码,但这是为他们准备的练习。我根本不上交这段代码。递归似乎是一个令人困惑的概念,我的教授解释得不好,教材也很混乱。谢谢你的回答,在我练习递归时,我会有这些回顾和参考。@NewbieNick很高兴能帮上忙:)我知道这个网站上的人不喜欢别人分发代码,但这是为了练习。我根本不交这段代码。递归似乎是一个令人困惑的概念,我的教授解释不清楚,教材也很混乱。谢谢你的回答,我在练习递归时会回顾和参考这些。@Newbi埃尼克很乐意帮忙:)