黑马程序员技术交流社区

标题: 分享一道有意思的面试题 [打印本页]

作者: dbqwaii    时间: 2013-2-26 10:13
标题: 分享一道有意思的面试题
1  1  2  3 5 8  13  21 34```` 找出规律

        int a = 1;
            int b = 0;
            int sum = 0;
            for (int i = 0; i < 8; i++)
            {
                sum = a + b;
                b = a;
                a = sum;
                Console.WriteLine(sum);
            }
希望还有其他的方法  谢谢

            Console.ReadKey();
作者: 王立    时间: 2013-2-26 10:21
用递归可以

static void Main(string[] args)
        {
            //求 1 1 2 3 5 8


            //普通方法
            int[] num = new int[10];
            num[0] = 1;
            num[1] = 1;
            for (int i = 2; i < num.Length; i++)
            {
                num[i] = num[i-1] + num[i-2];
            
            }
            Console.WriteLine(num[9]);
            Console.ReadKey();
            //递归
            Console.WriteLine(DiGui(10));
            Console.ReadKey();
        }
        //递归
        public static int DiGui(int i)
        {
            if (i==1)
            {
                return 1;
            }
            else if (i==2)
            {
                return 1;
            }
            else
            {
                return DiGui(i - 1) + DiGui(i - 2);
            }
           
        }
作者: xiaoxiang_04    时间: 2013-2-26 10:24
这个一般用递归算法
static int F(int x)
{   if(x<1)     
{throw new InvalidArgumentException("x");   }
else if(x<3)     
{return 1;}   
else     
return F(x-1)+F(x-2); }
这样可以保证,这个数列到多少位都可以算的出来




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