想必大家都对“兔子生兔子”问题有所耳闻,在这里,小弟也不卖关子,直接进入正题!
“兔子生兔子”的问题是这样的: 有一只神奇的兔子,它可以靠自己就可以生兔子!但有个时间的规定,它出生后的第三个月开始才可以生一只兔子,但此后的每个月都可以生一只兔子,而且更神奇的是,它所生的兔子竟然跟它有一模一样的魔力!你懂的,这就是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;
}
你是不是觉得这个算法似曾相识?没错~ 它就是经典的斐波那契数列!估计当时斐波那契家里就是养了这么一个神奇的兔子,然后...然后...你懂的,呵呵,小小玩笑。
当然,递归算法在很多实际问题中并不推荐使用,因为它是无底洞式的在消耗栈空间!这里只是基于尽可能简洁的代码的考虑,望大家互相交流~