【发布时间】:2018-08-10 03:35:58
【问题描述】:
所以我在codingbat 上进行递归挑战时遇到了“兔子耳朵”问题,我们有很多兔子,每只兔子都有两个松软的大耳朵。我们想递归地计算所有兔子的耳朵总数(没有循环或乘法)。
解决方案显然很简单:
public int bunnyEars(int bunnies)
{
if(bunnies == 0)
return 0;
return 2+bunnyEars(bunnies-1);
}
但我无法理解。如果我们在 bunnyEars(2) 方法中传递 2
递归部分 bunnyEars(bunnies-1);减法后括号中应该有 1,因此是 2+(1);应该等于 3 而不是 4。
但是输出是 4。那么递归在这段代码中实际上是如何工作的呢?
【问题讨论】: