`

浅谈递归算法

阅读更多
先看一下一般的做法
//{1,1,2,3,5,8,^}求第三十个数的值(一般做法)
        protected static int fun2(int n)
        {
            int sum = 0;
            int b = 1;
            int a = 1;
            if (n==1)
        {
        return a;

        }
            else if (n==2)
        {
        return b;
        }
            else if (n>=3)
        {
        for (int i = 0; i < n - 2; i++)
                {
                    sum = a + b;
                    a = b;
                    b = sum;
                }
                return sum;
        }
            else
            {
                //Console.WriteLine("你输入的数据有误");
               throw new Exception("你输入的数据有误");
            }
这种做法程序不太理智,效率不高。我建议各位面试时要是考到这方面知识,千万别弄几个for循环给人家,除非非不得已,(我有朋友,人家考官一看,当场就game over)

推荐用以下,我知道比较好的算法
        //{1,1,2,3,5,8,^}求第三十个数的值(递归算法)
        protected static int fun1(int n)
        {
            if (n == 1)
            {
                return 1;
            }
            if (n == 2)
            {
                return 1;
            }
            else
            {
                return fun1(n - 1) + fun1(n - 2);
            }
            //return n;
        }

        //累加的递归
        public static int fun(int n)
        {
            return n <= 1 ? 1 : (n + fun(n - 1));
        }
分享到:
评论

相关推荐

    java递归算法浅谈

    Java 递归算法浅谈 Java 递归算法是 Java 编程中的一种常见算法,通过自调用函数实现复杂问题的解决。下面是 Java 递归算法的相关知识点。 一、递归函数的定义 递归函数是指在函数体内直接或间接地调用自己,即...

    浅谈递归机制和非递归转换.txt

    对于上述提到的一些递归算法,可以转换为非递归版本以提高效率或简化代码结构。 #### 非递归示例 1. **非递归阶乘计算**:可以使用循环来替代递归。 ```c int NonRecursiveFact(int n) { int result = 1; for ...

    浅谈Python 递归算法指归

    1. 递归概述 递归( recursion)是一种编程技巧,某些情况下,甚至是无可替代的技巧。递归可以大幅简化代码,看起来非常简洁,但递归设计却非常抽象,不容易掌握。通常,我们都是自上而下的思考问题, 递归则是...

    浅谈C语言函数的递归调用.pdf

    "浅谈C语言函数的递归调用.pdf" 本文主要讲述了C语言函数的递归调用,包括递归函数的定义、类型、应用实例和执行过程的分析。 递归函数是一种特殊的函数调用方式,它允许函数调用自身,使得问题可以被简化和解决。...

    算法文档无代码浅谈贪心算法在动态规划中的应用

    1. 子结构:贪心算法在动态规划问题中通常适用的情况是问题可以分解为相互独立的子问题,并且可以顺序或递归地解决。这样,每一小步的最优解都能保证最终结果是最优的。 2. 最优子结构:动态规划问题具有最优子结构...

    计算机算法浅谈

    在《计算机算法浅谈》这一文档中,作者骆吉洲教授从哈尔滨工业大学的计算机科学与工程系出发,深入浅出地介绍了算法的基本概念及多种重要的算法类型。 ### 算法基本概念 算法是指解决问题的一系列明确、有限步骤的...

    algorithm.rar_ElGamal改进_pgp_ssl_复数神经网络_改进Kohonen

    浅谈图像压缩算法 求全排列的非递归算法 如何实现DES算法 神经元网络 LVQ(学习矢量量化)算法 神经元网络的经典B-P算法1 神经元网络的经典B-P算法2 神经元网络的经典B-P算法3 实数快速fft变换算法 实数快速fft算法二 ...

    资料:浅谈程序设计竞赛的算法知识-罗勇军.docx

    本篇文章将围绕《浅谈程序设计竞赛的算法知识》这一主题展开讨论,重点解析竞赛中常见的算法知识及其应用场景。 #### 二、程序设计竞赛中考核的算法知识 1. **AdHoc(杂题)** - 特点:通常没有固定解法,需要...

    IOI国家集训队论文集1999-2019

    金 恺 -《浅谈网络流算法的应用》 李澎煦 -《半平面交的算法及其应用》 李 睿 -《二分法与统计问题》 骆 骥 -《浅析解 "对策问题" 的两种思路——从《取石子》问题谈起》 孙方成 -《偶图的算法及应用》 孙林春 ...

    浅谈神经网络算法

    本文于csdn,介绍了最简单的线性分类,多层级神经网络,如何训练神经网络,训练算法等。我们在设计机器学习系统时,特别希望能够建立类似人脑的一种机制。神经网络就是其中一种。但是考虑到实际情况,一般的神经网络...

    浅谈C语言课堂上的几个难点的讲解方法.pdf

    例如,可以通过可视化工具来演示循环的工作原理,通过编写简单的函数来加深对参数传递方式的理解,还可以通过分析经典递归算法来掌握递归函数的设计方法。此外,文章还提到,教师应该鼓励学生在学习过程中积极思考,...

    国家集训队2019论文集.zip

    张哲宇 - 《浅谈树上分治算法》 吴思扬 - 《“组合数求和”命题报告》 王思齐 - 《浅谈一类简洁数据结构》 陈孙立 - 《子串周期查询问题的相关算法及其应用》 吴作同 两关递推数列的性质和应用 福州第...

    搜索算法讲座资料~~~~~

    08暑假集训搜索组解题报告 ...浅谈部分搜索+高效算法在搜索问题中的应用.doc 深度优先搜索-bylove8909.doc 搜索基础.pdf 搜索入门 - from hdu.ppt 搜索算法的通用优化方法.pdf 谈搜索算法的剪枝优化.pdf

    浅谈数位类统计问题

    ### 浅谈数位类统计问题 在信息学竞赛领域,数位类统计问题是一类常见而又富有挑战性的问题类型,它们通常涉及到对特定区间内的数进行基于数位特性的统计分析。这类问题不仅考验参赛者的数学逻辑能力,还要求掌握...

    浅谈快速排序算法的改进 (2012年)

    之后,算法递归地对这两个部分分别进行快速排序,直到整个数组有序。 快速排序算法的效率受数组元素初始分布状态的影响。最坏情况出现在每次划分后,形成的子数组极度不平衡,导致算法退化到接近O(n^2)的时间复杂度...

    浅谈计算机专业要不要学数学的问题.pdf

    以汉诺塔问题为例,它是一个典型的递归算法问题,体现了数学思维在编程中的应用。递归是数学的一个核心概念,通过递归解决问题可以简化代码,提高程序的优雅性和效率。在实际编程中,无论是解决复杂度分析、动态规划...

    《数据结构》课程教学方法的浅谈.pdf

    例如,在讲解递归算法时,可以从学生熟悉的数学函数入手,进而过渡到更复杂的递归问题,同时使用状态图和栈变化图帮助学生直观地理解递归过程。 3. 通过与学生一同分析问题,写出解决问题的步骤,然后编写程序,并...

    ACM搜索算法:DFS+BFS+A*及动态规划

    "算法合集之《浅谈部分搜索+高效算法在搜索问题中的应用_》.pdf"和"搜索算法全集.pdf"提供了搜索算法的全面概述,可能包括多种搜索策略的比较、实例分析和优化方法。 通过学习这些文档,ACM竞赛参与者可以系统地...

Global site tag (gtag.js) - Google Analytics