题目如下:1,2,3,5,8,13…设计一个递归算法求第30位数字。
C#实现:
private static int Func1(int max, int current, int c1, int c2)
{
if(current == 3)
Console.Write("1,2,");
int c3 = c1 + c2;
Console.Write(c3 + ",");
if (current
{
c3 = Func1(max, current + 1, c2, c3);
}
return c3;
}
static void Main(string[] args)
{
Func1(30, 3, 1, 2);
…
输出:1,2,3,5,8,13,21,34,55,89,144,233,377,610,987,1597,2584,4181,6765,10946,17711,28657,46368,75025,121393,196418,317811,514229,832040,1346269,
这道题逻辑不难,目的是考察递归算法,但是,笔试时我放弃了,原因如下:
- 平时缺少该类笔试题的训练(应试教育~.~!)。
- 过度依赖机器了…如果该题是机试题相信会容易许多(可调试,能看到输出~.~!)。
- 笔试的话,感觉该类型题目很脑残啊...~.~!。
留贴纪念。