gpt4 book ai didi

java - 递归给出意外/错误的输出?

转载 作者:行者123 更新时间:2023-11-30 02:04:23 25 4
gpt4 key购买 nike

所以我在 codingbat 上进行递归挑战并遇到了“兔子耳朵”问题,我们有很多兔子,每个兔子都有两个松软的大耳朵。我们想要递归地计算所有兔子的耳朵总数(没有循环或乘法)。

解决方案显然非常简单:

public int bunnyEars(int bunnies)
{
if(bunnies == 0)
return 0;
return 2+bunnyEars(bunnies-1);
}

但是我无法理解。如果我们在 bunnyEars(2) 方法中传递 2递归部分 bunnyEars(bunnys-1);减法后括号中应剩下 1,因此为 2+(1);它应该等于 3 而不是 4。
但输出为 4。那么递归在这段代码中实际上是如何工作的呢?

最佳答案

不是 2+(1),而是 2+numberOfEarsOfBunnies(1) == 2+2。
我稍微重命名了该函数以使其更加明显。

或者更详细:

兔子耳朵数(2)==
2+兔子耳朵数量(1)==
2+(2+兔子耳朵数量(0))==
2+(2+0)==
2+2==
4

关于java - 递归给出意外/错误的输出?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51774351/

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