**已关闭。**此问题为not reproducible or was caused by typos。当前不接受答案。
这个问题是由打字错误或无法再重现的问题引起的。虽然类似的问题在这里可能是on-topic,但这个问题的解决方式不太可能帮助未来的读者。
2天前关闭。
Improve this question
我被要求递归地编写一个bunnyears函数,而不使用循环和乘法,但不知何故,我无法让代码工作,我也尝试过使用来自Web的代码,但似乎还有其他我做错的地方。以下是代码:
#include <stdio.h>
int bunnyEars(int numBunnies){
//int a = 2 * bunnyEars(bunnyEars(numBunnies-1));
if(numBunnies%2 == 0){
printf("%d", 3+bunnyEars(numBunnies-1));
return 3+bunnyEars(numBunnies-1);}
else if (numBunnies==0){
return 0;
}
else{
printf("%d", 2+bunnyEars(numBunnies-1));
return 2+bunnyEars(numBunnies-1);
}
return 0;
}
int main()
{
bunnyEars(4);
return 0;
}
挑战是这样的:我们有兔子站在一条线上,编号为1,2,......奇数的兔子有2只耳朵偶数的兔子有3只耳朵,写一个函数,得出一行中所有兔子耳朵的总和,没有循环和乘法
我期待着所有bunnyears的总和作为结果,但什么也没有得到,甚至没有一个错误的数字.而且我的返回函数是不工作在我的IDE idk为什么这就是为什么我也试图打印它,仍然没有
2条答案
按热度按时间r55awzrz1#
首先检查numBunies == 0,以下是正确的代码:
h7appiyu2#
首先,进行一次小型代码评审:
你需要把你的基本情况放在第一位。你的代码遇到了堆栈溢出,因为你的第一个条件对0为真,这意味着你永远不会停止递归。
你还需要对偶数的兔子做正确的计算。你说要求是
K % 3
,其中K
是兔子在行中的位置。你的代码只是加3。例如:兔子#2应该有两只耳朵,兔子#4应该有一只耳朵,兔子#6应该没有耳朵。输出: