兔子生兔子问题 (斐波那契数列变种)
2011-10-12 15:15
591 查看
想必大家都对“兔子生兔子”问题有所耳闻,在这里,小弟也不卖关子,直接进入正题!
“兔子生兔子”的问题是这样的: 有一只神奇的兔子,它可以靠自己就可以生兔子!但有个时间的规定,它出生后的第三个月开始才可以生一只兔子,但此后的每个月都可以生一只兔子,而且更神奇的是,它所生的兔子竟然跟它有一模一样的魔力!你懂的,这就是C++中的继承!
现在我们需要用尽可能简洁的代码完成“兔子生兔子”的问题,以下是小弟的解法:
#include<iostream>
using namespace std;
#define MONTH 5
int Feibo(int month)
{
int total = 1;
if(month>=3)
total = Feibo(month-1)+Feibo(month-2);
return total;
}
void main()
{
int total = 0;
total = Feibo(MONTH);
cout<<"total is: "<<total<<endl;
}
你是不是觉得这个算法似曾相识?没错~ 它就是经典的斐波那契数列!估计当时斐波那契家里就是养了这么一个神奇的兔子,然后...然后...你懂的,呵呵,小小玩笑。
当然,递归算法在很多实际问题中并不推荐使用,因为它是无底洞式的在消耗栈空间!这里只是基于尽可能简洁的代码的考虑,望大家互相交流~
“兔子生兔子”的问题是这样的: 有一只神奇的兔子,它可以靠自己就可以生兔子!但有个时间的规定,它出生后的第三个月开始才可以生一只兔子,但此后的每个月都可以生一只兔子,而且更神奇的是,它所生的兔子竟然跟它有一模一样的魔力!你懂的,这就是C++中的继承!
现在我们需要用尽可能简洁的代码完成“兔子生兔子”的问题,以下是小弟的解法:
#include<iostream>
using namespace std;
#define MONTH 5
int Feibo(int month)
{
int total = 1;
if(month>=3)
total = Feibo(month-1)+Feibo(month-2);
return total;
}
void main()
{
int total = 0;
total = Feibo(MONTH);
cout<<"total is: "<<total<<endl;
}
你是不是觉得这个算法似曾相识?没错~ 它就是经典的斐波那契数列!估计当时斐波那契家里就是养了这么一个神奇的兔子,然后...然后...你懂的,呵呵,小小玩笑。
当然,递归算法在很多实际问题中并不推荐使用,因为它是无底洞式的在消耗栈空间!这里只是基于尽可能简洁的代码的考虑,望大家互相交流~
相关文章推荐
- Java 兔子问题(斐波那契数列)扩展篇
- 斐波那契数列(用Java解决兔子数目问题)
- 斐波那契数列【黄金分割数列】-兔子问题
- 经典c程序(0007)---兔子问题(斐波那契数列)
- 【Java算法学习】斐波那契数列问题-兔子产子经典问题
- 递归---斐波那契数列。兔子问题
- JavaScript初级玩法(3)—兔子问题(斐波那契数列)
- java编程经典案例之基于斐波那契数列解决兔子问题实例
- 可爱的C语言程序。....兔子问题...斐波那契数列
- 兔子问题--斐波那契数列
- 斐波那契数列_兔子问题
- Java 兔子问题(斐波那契数列)扩展篇
- 递归解决-兔子问题-斐波那契数列
- Java算法--递推算法 求解兔子产子问题或斐波那契数列问题
- [JAVA]兔子繁殖问题(斐波那契数列的推算)
- 基础算法题----兔子问题(斐波那契数列)
- 斐波那契数列问题-兔子繁衍问题-c语言-c++-经典问题-编程
- 兔子问题(斐波那契数列)
- 斐波那契数列(兔子问题)的变形
- 兔子问题--斐波那契数列--递归--面向过程编程