Console-算法-递归算法示例

ylbtech-Arithmetic:Console-算法-递归算法示例
 
1.A,案例
-- ========================================================
-- ylb:算法
-- type:递归算法
-- thankyou:sunshine, 谢谢你的默默付出
-- 10:50 2012-04-06
-- ========================================================
1.B,解决方案

1.B.1,阶乘

using System;



namespace ConsoleApplication1

{

    class Program

    {

        /// <summary>

        /// ylb:阶乘

        /// </summary>

        /// <param name="args"></param>

        static void Main(string[] args)

        {

            //7!=7*6*5*4*3*2*1

            //n!=n*(n-1)!

            //结束 1!=1

            Console.WriteLine("请输入一个大于0的整数");

            int num = Convert.ToInt32(Console.ReadLine());



            Console.WriteLine(string.Format("这个整数{0}的阶乘为:{1}", num, fun(num)));



        }

        static int fun(int num)

        {



            if (num == 1)

            {



                return 1;

            }

            else

            {



                return num * fun(num - 1);

            }

        }



    }

}

1.B.2,一个经典的递归试题(一列数的规则如下: 1、1、2、3、5、8、13、21、34...... )

using System;



namespace ConsoleApplication1

{

    class Program

    {

        static void Main(string[] args)

        {

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

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

            Console.WriteLine("请输入一个大于0的整数");

            int num = 30;



            Console.WriteLine(string.Format("求第{0}位数是{1}", num, fun(num)));



        }

        static int fun(int num)

        {



            if (num <= 0)

            {



                return 0;

            }

            else if (num <= 2)

            {



                return 1;

            }

            else

            {



                return fun(num - 1) + fun(num - 2);

            }

        }



    }

}
1.B.2.2,一个经典的递归试题(一列数的规则如下: 1、1、2、3、5、8、13、21、34...... )(常规方法解决)
using System;



namespace ConsoleApplication1

{

    class Program

    {

        static int Fun(int i)

        {

            int sum=0;

            int temp=1;

            int temp2=1;

            

            if(i<=0)

            {

                sum=0;

            }

            else if(i<=2)

            {

                sum=1;

            }

            else

            {

                for(int j=3;j<=i;j++)

                {

                    sum=temp+temp2;

                    temp=temp2;

                    temp2=sum;

                }

            }

            return sum;

        }

        /// <summary>

        /// ylb:常规方法解决(非递归)

        /// </summary>

        /// <param name="args"></param>

        static void Main(string[] args)

        {

            Console.WriteLine(Fun(20));

        }

    }

}
warn 作者:ylbtech
出处:http://ylbtech.cnblogs.com/
本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。

你可能感兴趣的:(console)