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

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

作者:Robin  发布时间:2023-12-23 01:22:51 

标签:C#,递归算法

方法一:递归算法


/// <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;
}

0
投稿

猜你喜欢

手机版 软件编程 asp之家 www.aspxhome.com