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 ,如需转载请自行联系原作者
相关文章
|
26天前
|
算法
分享一些提高二叉树遍历算法效率的代码示例
这只是简单的示例代码,实际应用中可能还需要根据具体需求进行更多的优化和处理。你可以根据自己的需求对代码进行修改和扩展。
|
28天前
|
算法 Python
在Python编程中,分治法、贪心算法和动态规划是三种重要的算法。分治法通过将大问题分解为小问题,递归解决后合并结果
在Python编程中,分治法、贪心算法和动态规划是三种重要的算法。分治法通过将大问题分解为小问题,递归解决后合并结果;贪心算法在每一步选择局部最优解,追求全局最优;动态规划通过保存子问题的解,避免重复计算,确保全局最优。这三种算法各具特色,适用于不同类型的问题,合理选择能显著提升编程效率。
40 2
|
2月前
|
算法 搜索推荐 Shell
数据结构与算法学习十二:希尔排序、快速排序(递归、好理解)、归并排序(递归、难理解)
这篇文章介绍了希尔排序、快速排序和归并排序三种排序算法的基本概念、实现思路、代码实现及其测试结果。
27 1
|
6月前
|
存储 算法 程序员
数据结构与算法===递归
数据结构与算法===递归
|
2月前
|
移动开发 算法 前端开发
前端常用算法全解:特征梳理、复杂度比较、分类解读与示例展示
前端常用算法全解:特征梳理、复杂度比较、分类解读与示例展示
28 0
|
2月前
|
算法 定位技术
数据结构与算法学习九:学习递归。递归的经典实例:打印问题、阶乘问题、递归-迷宫问题、八皇后问题
本文详细介绍了递归的概念、重要规则、形式,并展示了递归在解决打印问题、阶乘问题、迷宫问题和八皇后问题等经典实例中的应用。
48 0
|
4月前
|
机器学习/深度学习 人工智能 算法
【人工智能】传统语音识别算法概述,应用场景,项目实践及案例分析,附带代码示例
传统语音识别算法是将语音信号转化为文本形式的技术,它主要基于模式识别理论和数学统计学方法。以下是传统语音识别算法的基本概述
90 2
|
4月前
|
算法
【算法】递归、搜索与回溯——汉诺塔
【算法】递归、搜索与回溯——汉诺塔
|
4月前
|
算法
【算法】合并两个有序链表(easy)——递归算法
【算法】合并两个有序链表(easy)——递归算法
【算法】合并两个有序链表(easy)——递归算法
|
4月前
|
机器学习/深度学习 运维 算法
深入探索机器学习中的支持向量机(SVM)算法:原理、应用与Python代码示例全面解析
【8月更文挑战第6天】在机器学习领域,支持向量机(SVM)犹如璀璨明珠。它是一种强大的监督学习算法,在分类、回归及异常检测中表现出色。SVM通过在高维空间寻找最大间隔超平面来分隔不同类别的数据,提升模型泛化能力。为处理非线性问题,引入了核函数将数据映射到高维空间。SVM在文本分类、图像识别等多个领域有广泛应用,展现出高度灵活性和适应性。
174 2