好得很程序员自学网

<tfoot draggable='sEl'></tfoot>

C#用递归算法实现:一列数的规则如下: 1、1、2、3、5、8、13、21、34,求第30位数是多少

方法一:递归算法

?

/// <summary>

/// 一列数的规则如下: 1、1、2、3、5、8、13、21、34求第30位数是多少, 用递归算法实现。(C#语言)

/// </summary>

/// <param name="pos"></param>

/// <returns></returns>

public int GetNumberAtPos( int pos)

{

   if (pos==0||pos==1)

   {

     return 1;

   }

   int res = GetNumberAtPos(pos - 1) + GetNumberAtPos(pos - 2);

   return res;

}

方法二:不用递归

?

using System;

using System.Collections;

using System.Collections.Generic;

using System.Text;

 

namespace Test

{

   public class Class1

   {

     private ArrayList list = new ArrayList();

 

     public Class1()

     {

     }

 

     public Class1( int num)

       : base ()

     {

       int i;

 

       for (i = 1; i <= num; i++)

       {

         list.Add(Calculation(i));

       }

     }

 

     private int Calculation( int num)

     {

       if (num == 1 || num == 2)

         return 1;

       else

         return Convert.ToInt32(list[num - 2]) + Convert.ToInt32(list[num - 3]);

     }

 

     public int Calculation()

     {

       return Convert.ToInt32(list[list.Count - 1]);

     }

   }

 

   public class test

   {

     public static void Main()

     {

       int j;

       int num;

       for (j = 1; j < 100; j++)

       {

         Console.WriteLine( "你要计算第多少位:" );

         string readstr;

         readstr = Console.ReadLine();

         if (! string .IsNullOrEmpty(readstr))

         {

           if ( int .TryParse(readstr, out num))

           {

             if (num < 1)

               continue ;

             else

             {

               Class1 c1 = new Class1(num);

               Console.WriteLine(c1.Calculation());

             }

           }

           else

           {

             continue ;

           }

         }

         else

         {

           break ;

         }

       }

     }

   }

}

方法三:用循环实现

?

public long getNumber( int pos)

{

   long one = 1;

   long two = 1;

   if (pos == 0 || pos == 1)

   {

     return 1;

   }

   int i = 3;

   long sum = 1;

   while (i <= pos)

   {

     sum = one + two;

     one = two;

     two = sum;

     i++;

   }

   return sum;

}

以上就是本文的全部内容,希望能给大家一个参考,也希望大家多多支持服务器之家。

dy("nrwz");

查看更多关于C#用递归算法实现:一列数的规则如下: 1、1、2、3、5、8、13、21、34,求第30位数是多少的详细内容...

  阅读:45次