***************************************转载请注明出处:http://blog.csdn.net/lttree******************************************
一、 引言
今天早上,例行随便看看。
看到文章 -> 面试中如何剔除“鱼目混珠”的程序员
看到里面这段:
招聘程序设计人员,尤其是提到代码,最流行的将鱼目混珠的程序员剔除的问题是 “Fizz-Buzz” 测试。如果一个程序员无法在10-15分钟之间写出一个 Fizz-buzz,那他可能需要更多的锻炼,或许根本没有准备好。另外一个方法就是让他们写 Fibonacci series(斐波纳契数列),并请他们优化一下。大家都知道 Fibonacci 是非常常见的,但是你可能会很惊讶的看到这些程序员很难在之上写出这些数列,即使是在 IDE 上也写不出来。
恩,话说不懂什么事Fizz-buzz测试。。。
于是Wiki了一下 -> http://en.wikipedia.org/wiki/Fizz_buzz
好吧,就是个报数游戏,3或3的倍数 喊Fizz,5或5的倍数喊Buzz,如果既是3又是5的倍数喊FizzBuzz。
重点是后面的那个Fibonacci 的优化,
我只知道 递归和递推两种,上网搜了搜,果真优化很多
看到了 时间复杂度O(log(n)) 空间复杂度O(1)的方法。
就想学习一下
二、Fizz-Buzz
这个我觉得没有难度,
这是我写的:
<span style="font-family:Comic Sans MS;font-size:14px;">// Fizz Buzz
void FizzBuzz( int n )
{
bool isFZ;
for( int i = 1 ; i <= n ; ++i )
{
isFZ=false;
if( i % 3 == 0 ) {cout<<"Fizz";isFZ&#