Java 递归的简单解释

当一个函数用它自己来定义的时候就称为是递归的。--《数据结构与算法分析java语言描述》
例如:我们可以在非负整数集上定义一个函数f,满足f(0)=0且f(x)=2f(x-1)+x*x。可以得到f(1)=1,f(2)=6,f(3)=21。

public int f(int x){
    if(x == 0){
        return 0;
    }else{
        return 2 * f(x-1) + x * x;
    }
}

基本法则
1.基准情况:必须要有某些基准的情形,不用递归就能求解。
2.不断推进:对于那些要递归求解的情形,递归调用必须总能朝着一个基准情形推进。

  • 当x=0时可以算出而不用递归。和数学公式f(x)=2f(x-1)+xx一样,若没有f(0)=0这个事实在,这个公式就没有意义。Java的递归若没有基准情况*也是毫无意义。上述代码,当x=0时返回0,就是基准情况。
  • f(4)需要执行f(3),因此要执行f(2),又要另外执行f(1),因此,2*f(0)+1得到f(1)=1。此时f(0)必须被赋值。由于属于基准情况,我们事先得知f(0)=0。从而f(1)=1。然后f(2)、f(3)、f(4)等的值都能够计算出来
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 最近高等代数正好讲到这里,此篇文章正好对所学知识做一个具体程序实践。 设计算法时使用递归的思想是一个程序员的基本素...
    FrancisSoung阅读 4,583评论 2 3
  • 级别:★☆☆☆☆标签:「递归」「四条递归实现基本原则」作者: 陈彬审校: QiShare团队 引言:这篇文章主要讲...
    QiShare阅读 2,161评论 0 8
  • 递归算法是一些基本数据结构实现的基础,不掌握递归那很多数据结构没法说了。我们在这里总结一下递归的用法。 递归简论:...
    凉风拂面秋挽月阅读 128评论 0 0
  • 1.本书讨论的内容 设有一组N个数而要确定其中第K个最大者,称之为选择问题 一种解法 该问题的一种解法是将这N个数...
    MelloCat阅读 380评论 1 2
  • 当一个函数用它自己来定义时就称为是递归的。 举例如下:public static int fun(int x){i...
    advance_bravely阅读 159评论 0 1