如题
要求用最好用C#递归的方法写的输入一个数字,判断它是否为斐波那契数!!

解决方案 »

  1.   

    F(n)=(1/√5)*{[(1+√5)/2]^n - [(1-√5)/2]^n}
      

  2.   

    int no = 30int[] arr = new int[no];
    arr[0] = 1;
    arr[1] = 1;
    for (int i=2; i<no; i++) arr[i] = arr[i-1] + arr[i-2];
    //数组arr里为30的裴波那契数
      

  3.   

    以上的unsafe代码版int no = 30int* arr = stackalloc int[no];
    int* p = arr;
    *p++ = *p++ = 1;
    for (int i=2; i<no; ++i, ++p) *p = p[-1] + p[-2];
      

  4.   

    你搜索下“递归”满地都是斐不拉叽数列
    private int GetData(int index)
    {
       int ret;
       if((index ==0)||(index==1))
       {
          ret=1;
       }
       if(index >1)
       {
          ret = GetData(index-1)+GetData(index-2);
       }
       return ret;
    }
      

  5.   

    你数组有多大,长度知道的话,假如有len项
    int[] t=new int[];
    for(i=0;i<=len-1;i++)
     t[i]=GetData(i);private int GetData(int index)
    {
       int ret;
       if((index ==0)||(index==1))
       {
          ret=1;
       }
       if(index >1)
       {
          ret = GetData(index-1)+GetData(index-2);
       }
       return ret;
    }
    然后把你的数组里面的值一个一个拿出来和t[]比较不就完事?
      

  6.   

    符合楼主简化的思路:
    一个数是否是斐数,可以这样考虑,如果假n为斐数,假设此斐数前面一个斐数为x,那么再前面一个斐数必然就是n-x,再外前推一直可以算到起始的两个自然数必然分别都是1。如果这样推出的起始两数不全为1,就说明我们假设的x有误,我们从Int(n/2)到n来循环赋值给x,如果其中能推出起始的两数均为1,则n为斐数。否则不是。
    private bool judg_fei(int t)
    {
    int a,b,i;
    for(i=INT(t/2);i<t;i++)
    a=t;
    b=i;
    while(a>1&&b>1)
    {
     a=t-i;
     b=2*i-t;
    if(a==1&&b==1)
    return true;
    if(a<=0||b<=0)
    break;
    }
    return false;
    }
      

  7.   

    private bool judg_fei(int t)
    {
    int a,b,i;
    for(i=INT(t/2);i<t;i++)
    a=t;
    b=i;
    while(a>1&&b>1)
    { b=a-b;
     a=a-b;
    if(a==1&&b==1)
    return true;
    if(a<=0||b<=0)
    break;
    }
    return false;
    }