例:黑箱中有N(N>0)个相同小球,如果每次只能取出
1个或2个,请问把所有球全取出有几种不同取法?
首先这一看就是数学上的问题,我们看到是很头大,首先想到排列问题,然后就在想,一个一个算下来有啥规律?
最后发现: 没啥规律
这就应用到程序设计上面的思想了,如果一个很大的数字算不出来,你可以将其拆分成小的模块直到拆分成可以计算出来的模块。
这时候我们就来想斐波拉契的逆运算。是不是一下子想到前一位和前两位之和相加?
直接上代码看
#include<iostream>
using namespace std;
int Judgemax(int x)
{
if (x == 1)
return 1;
else if (x == 2)
return 2;
else
{
return Judgemax(x - 1) + Judgemax(x - 2);
}
}
int main()
{
int num;
cin >> num;
int p = Judgemax(num);
cout << p;
system("pause");
return 0;
}
看完你是不是茅塞顿开了呢?