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

解决方案 »

  1.   

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

  2.   

    //非递归裴波那契数列,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);