黑马程序员技术交流社区

标题: 斐波那契数列 1、1、2、3、5、8、13、21、34...... 求第30位数是多少 [打印本页]

作者: 胡元江    时间: 2013-2-14 18:48
标题: 斐波那契数列 1、1、2、3、5、8、13、21、34...... 求第30位数是多少
法1: static void Main(string[] args)
        {  
            Console.WriteLine(Foo(30));
            Console.ReadKey();
        }
        public static int Foo(int i)
                {
                if (i <= 0)
                return 0;
                else if(i > 0 && i <= 2)
                return 1;
                else return Foo(i -1) + Foo(i - 2);
                }

法2 :
       //前二数的和就是下一个数。
       int sum1 = 13;   //第一个数也可以是8
            int sum2 =21;   //第二个数也可以变成13
            int sum = 0;
            for (int i =9; i <= 30; i++)  //相应的i值也要减少
            {
                sum = sum1 + sum2;   //得到后面的数
                sum1 = sum2;            //将之和前面的数交换
                sum2 = sum;
            }
            Console.WriteLine(sum);
            Console.ReadKey();



问题:有没有办法把第二种办法也能变得活性。不只限制在第30个数
作者: 许晓华    时间: 2013-2-14 19:49
BigInteger




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2