Chinaunix首页 | 论坛 | 博客
  • 博客访问: 182463
  • 博文数量: 14
  • 博客积分: 1403
  • 博客等级: 上尉
  • 技术积分: 192
  • 用 户 组: 普通用户
  • 注册时间: 2009-06-18 16:36
文章分类

全部博文(14)

文章存档

2011年(5)

2010年(9)

分类: C/C++

2011-01-09 03:13:01

练习下递归算法吧。

斐波那契数列:11235813,21,34,55,……,

使用递归来算数列某位数的值,同时也用了数列公式来算,主要是熟悉下数学函数的使用。

递归的效率一如既往的差,计算第40项的值等好久。

代码:


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

namespace c4_t4
{
    class Program
    {
        static void Main(string[] args)
        {
            Console.Write("输入想求的斐波那契数列项数:");
            int n = Convert.ToInt32(Console.ReadLine());
            //递归实现

            Console.WriteLine("斐波那契数列数列递归算出的第{0}项为:{1}", n, Calculate(n));

            //使用公式实现

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

            double k5 = Math.Sqrt(5);
            double sum2 = Math.Floor((Math.Pow(((1 + k5) / 2), n) - Math.Pow(((1 - k5) / 2), n)) / k5);
            Console.WriteLine("斐波那契数列数列公式算出的第{0}项为:{1}", n, sum2);
            Console.ReadLine();
        }

        static int Calculate(int n)
        {
            if (n <= 1)
            {
                return n;
            }
            else
            {
                return Calculate(n - 1) + Calculate(n - 2);
            }
        }
    }
}


阅读(5885) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~