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/
    本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。
  • 相关阅读:
    tsung基准测试方法、理解tsung.xml配置文件、tsung统计报告简介
    用指针方式,实现大小写字母户转,数字不变,遇到其他字符则停止转换并输出
    重写strcat函数,以实现strcat的功能
    重写strcpy函数,以实现strcpy的功能
    用指针的方式实现,重写strrchr函数的功能
    求指定整数范围内的素数之和
    求指定整数数组的中位数
    求一个数的阶乘
    LR中变量、参数的使用介绍
    Linux Shell流程例子
  • 原文地址:https://www.cnblogs.com/ylbtech/p/2922032.html
Copyright © 2011-2022 走看看