gpt4 book ai didi

java - 细菌的基本递归

转载 作者:行者123 更新时间:2023-12-01 16:30:20 33 4
gpt4 key购买 nike

刚开始学习递归,我对这个细菌问题感到困惑。基本上,我必须创造一种方法,在一定的时间内繁殖细菌。其模式/方程为bacteriaLastHour +bacteriaLastHour * 2。例如,一小时后将有 10 + 10 * 2 = 30 个细菌,2 小时后将有 30 + 30 * 2 = 90 个细菌。

这是我的代码:

public static int numBacteriaAlive(int hour)
{
int bacteriaLastHour = 10;
int total = 0;
// Write a base case
if(hour == 0){
return 10;
}

// Write a recursive call
total += (bacteriaLastHour * 2) + numBacteriaAlive(hour-1);
bacteriaLastHour *= 3;
return total;
}

对于第 1 小时和第 2 小时,该方法运行良好,返回 10 和 30。然而,对于其他小时,变量细菌LastHour 没有改变,因此它返回的数字是关闭的。我的代码返回 50 2 小时(应该是 90),70 3 小时(应该是 270),等等。任何建议都有帮助,谢谢!

编辑:无法更改参数值

最佳答案

这比您想象的要简单得多:

public static int numBacteriaAlive(int hour) {
if (hour == 0) { // base case
return 10;
}

int bacteriaLastHour = numBacteriaAlive(hour-1); // recursive case
return bacteriaLastHour*3;
}

注意:bacteriaLastHour + 2*bacteriaLastHourbacteriaLastHour*3

相同

一旦您编写了基本情况(对于 hour==0),您就必须相信 numBacteriaAlive(hour-1) 将返回正确的值。一旦知道了这一点,返回当前小时值的答案就很容易了。

关于java - 细菌的基本递归,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62054480/

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