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));
        }
    }
}
复制代码

本文转自ylbtech博客园博客,原文链接: http://www.cnblogs.com/ylbtech/archive/2013/02/22/2922032.html ,如需转载请自行联系原作者
相关文章
|
1月前
|
机器学习/深度学习 算法
递归算法题练习(数的计算、带备忘录的递归、计算函数值)
递归算法题练习(数的计算、带备忘录的递归、计算函数值)
|
3月前
|
算法 Java C++
试题 算法训练 6-2递归求二进制表示位数
试题 算法训练 6-2递归求二进制表示位数
17 0
|
1月前
|
机器学习/深度学习 数据采集 监控
机器学习-特征选择:如何使用递归特征消除算法自动筛选出最优特征?
机器学习-特征选择:如何使用递归特征消除算法自动筛选出最优特征?
58 0
|
1月前
|
存储 缓存 算法
【数据结构与算法】【小白也能学的数据结构与算法】递归 分治 迭代 动态规划 无从下手?一文通!!!
【数据结构与算法】【小白也能学的数据结构与算法】递归 分治 迭代 动态规划 无从下手?一文通!!!
|
7天前
|
算法
算法系列--递归(一)--与链表有关(上)
算法系列--递归(一)--与链表有关
15 0
|
3月前
|
算法
【算法系列篇】递归、搜索和回溯(四)
【算法系列篇】递归、搜索和回溯(四)
|
25天前
|
存储 编解码 自然语言处理
【软件设计师备考 专题 】深入理解数据压缩、递归和图的相关算法
【软件设计师备考 专题 】深入理解数据压缩、递归和图的相关算法
62 0
|
1月前
|
算法 Java 定位技术
【数据结构与算法】递归、回溯、八皇后 一文打尽!
【数据结构与算法】递归、回溯、八皇后 一文打尽!
|
1月前
|
存储 算法 C语言
【数据结构与算法】【约瑟夫问题】还在用递归?教你用链表秒杀约瑟夫
【数据结构与算法】【约瑟夫问题】还在用递归?教你用链表秒杀约瑟夫
|
2月前
|
搜索推荐 算法 C++
【递归版】归并排序算法(1)
【递归版】归并排序算法(1)
22 0