有这样一列数 1 3 6 11 19 ....
求第十九位数 
请用C# 递归实现这是我面试时候公司出的笔试题

解决方案 »

  1.   


            private int getValue(int n)
            {
                if (1 == n)
                {
                    return 1;
                }
                else if (2 == n)
                {
                    return 3;
                }
                else
                {
                    return getValue(n - 1) + getValue(n - 2) + 2;
                }
            }
      

  2.   

           1
    0 + 1= 3-2
    1 + 3= 6-2
    3 + 6=11-2
    6 +11=19-2
    11+19=??-2
            private static int GetData(int count)
            {
                if (count <= 1)
                {
                    return 1;
                }
                else if (count == 2)
                {
                    return 3;
                }
                else 
                {
                    return GetData(count - 1) + GetData(count - 2) + 2;
                }
            }
    比较笨的方法~
      

  3.   

    根据2楼的分析,我看到了公式f(n)=f(n-1)*2-f(n-3)
    所以方法如下
    public int GetNo(int n)
            {
                int resultNo = 0;
                if (n == 1)
                {
                    resultNo = 1;
                }
                else
                    if (n == 2)
                    {
                        resultNo = 3;
                    }
                    else
                        if (n == 3)
                        {
                            resultNo = 6;
                        }
                        else
                        {
                            resultNo = GetNo(n - 1) * 2 - GetNo(n - 3);
                        }
                return resultNo;
            }
      

  4.   


    改下 private int getValue(int n)
            {
                if (1 == n)
                {
                    return 1;
                }
                else if (2 == n)
                {
                    return 3;
                }
                else if(0 >= n)
                {
                    return 0;
                }
                {
                    return getValue(n - 1) * 2 - getValue(n - 2);
                }
            }
      

  5.   

    f(n)=f(n-1)+f(n-2)+2 n > 2 不对吗?