斐波纳妾算法的代码实现

今天翻到一套斐波纳妾算法的题目,来了兴致,就写了写玩玩。

题目如下:有一列数1,1,2,3,5,......求第30个数。

发现这有好几总解法,最典型的当然是迭代算法。

目前为止,我发现以下几种解法:

1.简单判断加法

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace TestPaper
{
      class Program
         {

                static void Main(string[] args)
                   {
                        int c = 0;
                        CalMethod cal = new CalMethod();
                        Console.WriteLine("Input the number:");
                        c= Convert.ToInt32(Console.ReadLine());
                        Console.WriteLine("sum is {0}",cal.CalFeiBoNaQie(c)) ;
                        Console.ReadKey();
                   }
         }

    class CalMethod
        {
              private int sum = 0;
              private int a = 0;
              private int b = 1;
              private int i = 1;

              public void CalFeiBoNaQie(int SumCount)
                   {
                         // 有一列数1,1,2,3,5....求第30个数
                         for (int icount = 1; icount <= SumCount; icount++)
                            {
                                sum = a + b;
                                if (icount % 2 == 0)
                                    {
                                         a = sum;
                                   }
                                else
                                    {
                                         b = sum;
                                    }

                               }

             Console.WriteLine("Sum of {0} Number is {1}", SumCount, sum);
             Console.ReadKey();
           }

     }

}

2.数组计算法

 

 

3.迭代算法

 


using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace TestPaper
{
class Program
{


static void Main(string[] args)
{
int c = 0;
CalMethod cal = new CalMethod();
Console.WriteLine("Input the number:");
c= Convert.ToInt32(Console.ReadLine());
Console.WriteLine("sum is {0}", cal.calRecursionTest(c)) ;
Console.ReadKey();
}
}

class CalMethod
{
private int sum = 0;
private int a = 0;
private int b = 1;
private int i = 1;
//private int j = 1;

public int calRecursionTest(int sumCount1)

{
if (sumCount1 == 1 || sumCount1 == 2)
{
sum = i;
return sum;
}
for (int a = 3; a <= sumCount1; a++)
{
sum = calRecursionTest(a - 1) + calRecursionTest(a - 2);
}
//Console.WriteLine("Sum is {0}", sum);
return sum;

}


}


}

转载于:https://www.cnblogs.com/keepSmile/p/4623898.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值