// We have bunnies standing in a line, numbered 1, 2, ...
// The odd bunnies (1, 3, ..) have the normal 2 ears.
// The even bunnies (2, 4, ..) we'll say have 3 ears, because they each have a raised foot.
// Recursively return the number of "ears" in the bunny line 1, 2, ... n
// (without loops or multiplication).
// bunnyEars2(0) → 0
// bunnyEars2(1) → 2
// bunnyEars2(2) → 5
#include <stdio.h>
// To enable debug messages uncomment #define
#define TEST 1
int bunnyEars2(int bunnies);
void startTesting();
int main(void) {
#ifdef TEST
startTesting();
#endif
return 0;
}
int bunnyEars2(int bunnies) {
if (bunnies == 0) {
return 0;
}
if (bunnies == 1) {
return 2;
}
if (bunnies % 2 == 0) {
return 3 + bunnyEars2(bunnies - 1);
}
return 2 + bunnyEars2(bunnies - 1);
}
void startTesting()
{
int result = 0;
int i = 0;
for (i = 0; i <= 5; i++) {
result = bunnyEars2(i);
printf("BunnyEars(%d) = %d\n", i
, result
); }
}