gpt4 book ai didi

java - 使用递归创建幂方法

转载 作者:行者123 更新时间:2023-12-01 18:13:35 24 4
gpt4 key购买 nike

我对编程非常陌生,Java 是我的第一门真正的语言。此时在类里面我们正在接触递归,并被要求创建一个适合某些参数的方法:

该方法如下:public void power(int p),我们无法更改该方法的形式参数。我在其他地方研究过这个问题,似乎很多解决方案都涉及添加 int n (用于执行幂操作的数字)作为参数。

当编写类似的方法时,我们被鼓励使用“this”作为我们试图改变的内容的表示。通常“this”用在实例方法中,即:this.increment()。

当我为它编写伪代码时,我发现我想要执行以下操作:

public void power(int p) {
assert p >= 0 : "Violation of: p >= 0";
int x = 0;

if (p == 0) {
return 0;
}
if (p % 2 == 0) {
x = this.power(p / 2);
return x * x;
} else {
return this * this.power(p - 1);
}

我只是不知道如何编写它,以便它实际上可以与 eclipse 和 java 一起运行。任何见解将不胜感激!

最佳答案

下面的停止条件是错误的,它应该返回1

if (p == 0) {
return 0; // should return 1
}

如果使用this,则不能在Java中使用乘法运算符*。您可以拥有一个不应该改变被调用者的 multiplyBy 函数:

public int multiplyBy(int x) {
return this.value * x;
}

正如您在上面的方法中所看到的,您需要一个实例属性来存储您的整数值。所以你的代码现在看起来像:

public void power(int p) {
assert p >= 0 : "Violation of: p >= 0";
int x = 0;

if (p == 0) {
return 1;
}
if (p % 2 == 0) {
x = this.power(p / 2);
return x * x;
} else {
return this.multiplyBy(this.power(p - 1));
}
}

关于java - 使用递归创建幂方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31106626/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com