zoukankan      html  css  js  c++  java
  • 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/
    本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。
  • 相关阅读:
    表单提交
    后台返回来的数据是字符串
    背景图充满屏幕
    微信小程序添加模板消息
    axios
    前端常见的跨域解决方案
    gulp的压缩
    git的使用步骤
    vue项目使用mint UI
    利用HBuilder将vue项目打包成移动端app
  • 原文地址:https://www.cnblogs.com/ylbtech/p/2922032.html
Copyright © 2011-2022 走看看