Java面向对象-递归

递归,就是程序调用自身,我们讲的是方法递归调用,也就是在方法里自己调用自己;

我们给出一个案例,求阶乘  1*2*3*...*(n-1)*n

我们用非递归和递归方式分别实现下,大家可以比较下;

我们先用非递归方式 大家肯定会想到用循环实现,

上代码:

 package com.java1234.chap03.sec03;

 public class Demo03 {

     /**
* 非递归
* @param n
* @return
*/
static long notDiGui(int n){
long result=1;
for(int i=1;i<=n;i++){
result=result*i;
}
return result;
} public static void main(String[] args) {
System.out.println(Demo03.notDiGui(5));
}
}

递归的话 我们首先要找到规律 还有必须有一个出口;

我们来先说说规律 比如求5的阶乘

我们会发现规律

n=5   F(n)=F(n-1)*5  即F(5)=F(4)*5

n=4   F(n)=F(n-1)*4  即F(4)=F(3)*4

n=3   F(n)=F(n-1)*3  即F(3)=F(2)*3

n=2   F(n)=F(n-1)*2  即F(2)=F(1)*2

n=1   1

上代码:

 package com.java1234.chap03.sec03;

 public class Demo03 {

     /**
* 递归方式
* @param n
* @return
*/
static long diGui(int n){
if(n==1){
return 1;
}
return diGui(n-1)*n;
} public static void main(String[] args) {
System.out.println(Demo03.diGui(5));
}
}

Java面向对象-递归的更多相关文章

  1. Java面向对象 IO (三)

     Java面向对象  IO  (三) 知识概要:                    (1)IO 流的操作规律                    (2)异常日志信息IO处理          ...

  2. 关于java的递归写法,经典的Fibonacci数的问题

    经典的Fibonacci数的问题 主要想展示一下迭代与递归,以及尾递归的三种写法,以及他们各自的时间性能. public class Fibonacci { /*迭代*/ public static ...

  3. JAVA面向对象

    JAVA面向对象 对象   我们生活中能看到能摸到的一切事物都是对象.在程序中模拟出生活中的所有东西万物皆对象   只要是对象--属性和行为(方法)   属性   对象有什么   例如:学生有姓名.学 ...

  4. 理解JAVA - 面向对象(object) - 属性,方法

    理解JAVA - 面向对象(object) - 属性,方法 多态的体现:    向上造型,父类接收子类对象:向上造型:    从父类角度看不到子类独有的方法:面向对象,人类认知世界的方式:生活中每天都 ...

  5. Java面向对象㈠ -- 封装

    Java的面向对象有三大特征:封装.继承.多态.这里主要对封装进行讲解. 封装可以理解为隐藏一个类的成员变量和成员函数,只对外提供需要提供的成员函数. Java的封装主要通过访问权限控制符:priva ...

  6. 谈谈Java面向对象的三大特性

    Java面向对象的三大特性就是指封装.继承.多态了. 一.封装: 概念:封装是指隐藏对象的属性和实现细节,仅对外提供公共访问方式. (举例:笔记本电脑就是一个封装体,Java语言中最小的封装体就是函数 ...

  7. Java面向对象:接口

    Java面向对象之接口 什么是接口:接口是一种规范和标准,他们可以约束类的行为,是一些方法特征的集合 语法: [修饰符] interface 接口名 extends 父接口1,夫接口2....... ...

  8. 实验二 Java面向对象程序设计

    实验二 Java面向对象程序设计 实验内容 1. 初步掌握单元测试和TDD 2. 理解并掌握面向对象三要素:封装.继承.多态 3. 初步掌握UML建模 4. 熟悉S.O.L.I.D原则 5. 了解设计 ...

  9. java基础1.0::Java面向对象、面向对象封装、抽象类、接口、static、final

    一.前言 一直以来都是拿来主义,向大神学习,从网上找资料,现在就把自己在工作中和学习中的所理解的知识点写出来,好记星不如烂笔头,一来可以作为笔记自己温习,二来也可以给走在求学之路的同学们一点参考意见, ...

随机推荐

  1. MySQL 实践

    一.下载MySQL 1.mysql-noinstall-5.1.73-win32.zip 2.mysql-connector-net-6.8.3.msi 二.安装MySQL 三.连接MySQL 1.A ...

  2. Python输出中文到文件时的字符编码问题

    今天在使用Python的GUI平台wxPython时,写了一个只有打开.编辑.保存功能的简易笔记本,代码如下: #coding:utf-8 import wx def load(event): f = ...

  3. velocity与map

    1. 遍历map map<String, Object> mapData = new HashMap<String, Object>(); mapData.put(" ...

  4. 《Drools7.0.0.Final规则引擎教程》第4章 4.2 auto-focus

    auto-focus 在agenda-group章节,我们知道想要让AgendaGroup下的规则被执行,需要在代码中显式的设置group获得焦点.而此属性可配合agenda-group使用,代替代码 ...

  5. oracle重建undo表空间

    create undo tablespace UNDOTBS2 datafile 'D:\oracle\product\10.2.0\oradata\ttonline\UNDOTBS02.DBF' s ...

  6. ngxtop实时监控nginx状态

    ngxtop实时解析nginx访问日志,并且将处理结果输出到终端,功能类似于系统命令top,所以这个软件起名ngxtop.有了ngxtop,你可以实时了解到当前nginx的访问状况,再也不需要tail ...

  7. 记录最近工作使用javascript对select[option]的操作

    1: 数据库取值赋予select选项 $(function(){ $("input[name='state'][value='{$store.state}']").attr(&qu ...

  8. 【ES6】箭头函数

    let getPrices = () => 4.55 console.log(getPrices()) let arr = ['apple', 'banana', 'orange'] arr.f ...

  9. Apache中 RewriteCond 规则参数介绍 转

    摘要: RewriteCond指令定义了规则生效的条件,即在一个RewriteRule指令之前可以有一个或多个RewriteCond指令.条件之后的重写规则仅在当前URI与Pattern匹配并且满足此 ...

  10. HDU - 6041:I Curse Myself(Tarjan求环&K路归并)

    There is a connected undirected graph with weights on its edges. It is guaranteed that each edge app ...