1、1、2、3、5、8、13、21、34...... 求第X位数是多少,2种实现方式

经典的面试题,之前面试时写的不够好,回来后重新想了下,以下是2实现方式:

方法一:【递归调用】

public int FooNum(int i)

        {

            if (i < 0) return 0;

            else if (i > 0 && i <= 2) return 1;

            else return FooNum(i - 1) + FooNum(i - 2);

        }

方法二:【for循环】

public int AddNum(int x)

        {

            int f1 = 1;

            int f2 = 1;

            int f3 = 0;

            for (int j = 0; j < x; j++)

            {

                if (j > 1)

                {

                    f3 = f2 + f1;

                    f1 = f2;

                    f2 = f3;

                }

                else

                {

                    f3 = 1;

                }

            }

            return f3;

        }

调用(假设求第30位):

public void button1_Click(object sender, EventArgs e)

        {

             int N1= FooNum(30);

            int N2 = AddNum(30);

            MessageBox.Show(N1.ToString() +"---"+ N2.ToString());

结果:832040---832040 

原文地址:https://www.cnblogs.com/colder/p/2482444.html