• 两种递归方法的比较


    有道题目:

      一列数的规则如下: 1、1、2、3、5、8、13、21、34......

      求第30位数是多少, 用递归算法实现。

    两种实现方式,一种是从后往前加,一种是从前往后加

    Foo1方法看起来简洁,但执行次数多,第30要调用1664079次

    Foo2参数多,但只要调用29次

        public class MainClass
        {
            public static void Main()
            {
                Console.WriteLine(Foo1(30));
                Console.WriteLine(Foo2(1,1,30));
            }
            public static int Foo1(int i)
            {
                if (i <= 0)
                {
                    return 0;
                }
                else if (i > 0 && i <= 2)
                {
                    return 1;
                }
                else
                {
                    return Foo1(i - 1) + Foo1(i - 2);
                }
            }
            public static int Foo2(int a, int b, int i)
            {
                if (i > 2)
                {
                    return Foo2(b, a + b, --i);
                }
                else
                {
                    return b;
                }
            }
        }
  • 相关阅读:
    10.30 afternoon
    10.29 afternoon
    10.29 morning

    10.27 noip模拟试题
    codevs 3052 多米诺 二分图匹配
    poj 1849 Two
    10.26 noip模拟试题
    10.25 noip模拟试题
    .NET Core EF 版本问题
  • 原文地址:https://www.cnblogs.com/ldy_ai/p/5849921.html
Copyright © 2020-2023  润新知