兔子繁殖问题:一对兔子,从出生后第3个月起每个月都生一对小兔子。小兔子长到第3个月后每个月又生一对小兔子。求第20个月有多少对兔子。(分别使用迭代算法、递推算法和递归算法分别实现)
时间: 2024-06-15 13:08:06 浏览: 78
c代码-有一对兔子,从出生后第3个月起每个月都生一对兔子,小兔子长到第三个月后每个月又生一对兔子,假如兔子都不死,问每个月的兔子总数为多少?(输出前40个月即可)
迭代算法实现:
```cpp
#include <iostream>
int rabbitPairs(int n) {
int a = 1, b = 1;
for (int i = 3; i <= n; i++) {
int temp = b;
b = a + b;
a = temp;
}
return b;
}
int main() {
int month = 20;
int pairs = rabbitPairs(month);
std::cout << "第" << month << "个月有" << pairs << "对兔子。" << std::endl;
return 0;
}
```
递推算法实现:
```cpp
#include <iostream>
int rabbitPairs(int n) {
if (n <= 2) {
return 1;
}
int a = 1, b = 1;
for (int i = 3; i <= n; i++) {
int temp = b;
b = a + b;
a = temp;
}
return b;
}
int main() {
int month = 20;
int pairs = rabbitPairs(month);
std::cout << "第" << month << "个月有" << pairs << "对兔子。" << std::endl;
return 0;
}
```
递归算法实现:
```cpp
#include <iostream>
int rabbitPairs(int n) {
if (n <= 2) {
return 1;
}
return rabbitPairs(n - 1) + rabbitPairs(n - 2);
}
int main() {
int month = 20;
int pairs = rabbitPairs(month);
std::cout << "第" << month << "个月有" << pairs << "对兔子。" << std::endl;
return 0;
}
```
以上三种算法都可以得到第20个月的兔子对数为6765对。
阅读全文