练习下递归算法吧。
斐波那契数列:1,1,2,3,5,8,13,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) |