裴波那契数列

1,1,2,3,5,8,13,21……
通过递归方法实现此数列,怎么得到第30位的数值!
用c#实现

//递归裴波那契数列
public int fei(int i)
{
    if (i==1 || i==2)
    {
        return 1;
    }
    else
    {
        return fei(i-1) + fei(i-2);
    }
}

int var = fei(30);

//非递归裴波那契数列,unsafe代码(用指针)
public unsafe int fib(int no)
{
    int* fib = stackalloc int[no];
    int* p = fib;
    *p++ = *p++ = 1;
    for (int i=2; i<no; ++i, ++p) *p = p[-1] + p[-2];
    return fib[no];
}

int var = fib(30);

 求前n相的和

 int feb(int s)
{
    if (s < 2)
   {
        Console.WriteLine("1,"+s);
        return 1 + s;
   }
   else
   {
       Console.Write(s.ToString() + ",");
       return feb(s - 1) + s;
    }
}

posted @ 2007-05-17 16:36  peak  阅读(488)  评论(0)    收藏  举报