Java面向对象-递归
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面向对象-递归的更多相关文章
- Java面向对象 IO (三)
Java面向对象 IO (三) 知识概要: (1)IO 流的操作规律 (2)异常日志信息IO处理 ...
- 关于java的递归写法,经典的Fibonacci数的问题
经典的Fibonacci数的问题 主要想展示一下迭代与递归,以及尾递归的三种写法,以及他们各自的时间性能. public class Fibonacci { /*迭代*/ public static ...
- JAVA面向对象
JAVA面向对象 对象 我们生活中能看到能摸到的一切事物都是对象.在程序中模拟出生活中的所有东西万物皆对象 只要是对象--属性和行为(方法) 属性 对象有什么 例如:学生有姓名.学 ...
- 理解JAVA - 面向对象(object) - 属性,方法
理解JAVA - 面向对象(object) - 属性,方法 多态的体现: 向上造型,父类接收子类对象:向上造型: 从父类角度看不到子类独有的方法:面向对象,人类认知世界的方式:生活中每天都 ...
- Java面向对象㈠ -- 封装
Java的面向对象有三大特征:封装.继承.多态.这里主要对封装进行讲解. 封装可以理解为隐藏一个类的成员变量和成员函数,只对外提供需要提供的成员函数. Java的封装主要通过访问权限控制符:priva ...
- 谈谈Java面向对象的三大特性
Java面向对象的三大特性就是指封装.继承.多态了. 一.封装: 概念:封装是指隐藏对象的属性和实现细节,仅对外提供公共访问方式. (举例:笔记本电脑就是一个封装体,Java语言中最小的封装体就是函数 ...
- Java面向对象:接口
Java面向对象之接口 什么是接口:接口是一种规范和标准,他们可以约束类的行为,是一些方法特征的集合 语法: [修饰符] interface 接口名 extends 父接口1,夫接口2....... ...
- 实验二 Java面向对象程序设计
实验二 Java面向对象程序设计 实验内容 1. 初步掌握单元测试和TDD 2. 理解并掌握面向对象三要素:封装.继承.多态 3. 初步掌握UML建模 4. 熟悉S.O.L.I.D原则 5. 了解设计 ...
- java基础1.0::Java面向对象、面向对象封装、抽象类、接口、static、final
一.前言 一直以来都是拿来主义,向大神学习,从网上找资料,现在就把自己在工作中和学习中的所理解的知识点写出来,好记星不如烂笔头,一来可以作为笔记自己温习,二来也可以给走在求学之路的同学们一点参考意见, ...
随机推荐
- laravel利用composer安装
composer create-project laravel/laravel --prefer-dist blog prefer:提升,提拔 dist:距离 blog 创建的项目文件夹名称 lara ...
- 多态、Object类和 JDK常用封装类型
多态 定义:某一类事物的多种存在形态. 多态的体现:父类的引用指向了自己的子类对象.父类的引用也可以接收自己的子类对象. 多态的前提:必须是类与类之间有关系,要么继承,要么实现.通常还有一个前提,存在 ...
- 接口取不到POST参数
利用类似httprequester小工具调试API时偶尔出现一直取不到POST的数据 解决方式: 1.$_POST['paramName']: 只能接收Content-Type: applicatio ...
- Android读取asserts和raw文件夹下的文件
Android读取asserts和raw文件夹下的文件 经常需要用到读取“/res/raw”和"/asserts"文件夹下的文件,索性写成工具类方便以后使用. 一.raw文件夹下的 ...
- Spring-Kafka 2.0.0发送API翻译
Kafka Template–2.2.0 api KafkaTemplate KafkaTemplate这个类包装了个生产者,来提供方便的发送数据到kafka的topic里面. 同步和异步的方法都有, ...
- java如何填写简历?(干货篇)
化身孤岛的鲸不才 - 十三夜之月 一份优秀的简历不一定能帮你找到一份满意的工作,但能大大提升你的面试机会. 不容否认,简历是对你的能力.教育和经历的一份简要信息概述. 简历中应该突出你最核心的 ...
- I.MX6 recovery mode hacking
/******************************************************************************** * I.MX6 recovery m ...
- (十)js获取日期
//将日期转换成字符串格式输出 function formatDateToString(){ // 先获取对象日期 var oDate = new Date(); // 从该对象中分别拿出所需要的 年 ...
- Windows下安装pillow、opencv库问题,亲测可行
安装pillow 库 python -m pip install pillow 出自:http://blog.csdn.net/Riverhope/article/details/78766969 安 ...
- python3.x 函数的参数
2016-08-09 15:06:18 位置参数 调用函数时,参数按照位置依次传递给函数 def show(a1,a2,a3,a4): print(a1,a2,a3,a4) show('s','h' ...