1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 | using System; using System.Collections.Generic; using System.Linq; using System.Text; namespace ConsoleApplication1 { /// <summary> /// 费伯纳契序列算法改进 /// 作者 suqifeng /// 2011-10-24 23:43 /// </summary> class Program { public static void Main( string [] args) { //普通递归算法 Console.WriteLine(Fibonacci(40)); //改进后递归算法 Console.WriteLine(fb(1, 1,1,40-2)); Console.Read(); } /// <summary> /// 普通递归算法 --费伯纳契序列 /// </summary> /// <param name="index">第多少位费伯纳契序列 数</param> /// <returns></returns> static int Fibonacci( int index) { return index <= 2 ? 1 : Fibonacci(index - 1) + Fibonacci(index - 2); } /// <summary> /// 改进后递归算法 --费伯纳契序列 /// </summary> /// <param name="f">第一位数</param> /// <param name="s">第二数</param> /// <param name="index">第多少位基数从1开始</param> /// <param name="count">第多少位费伯纳契序列 数</param> /// <returns></returns> public static int fb( int f, int s, int index, int count) { if (index <= count) { return fb(s, f + s, index + 1, count); } return s; } /// <summary> /// 改进后递归算法 --费伯纳契序列数求和 /// </summary> /// <param name="f">第一位数</param> /// <param name="s">第二数</param> /// <param name="index">第多少位基数从1开始</param> /// <param name="count">第多少位费伯纳契序列 数</param> /// <returns></returns> public static int fbcSum( int f, int s, int index, int count) { if (index <= count) { return fbcSum(s, f + s, index + 1, count); } return (f + s)-2; } } } |
联系客服