简单的数据整理, 递归算法

  今天接触了一下递归, 一开始听的时候不知道啥意思, 只是按照答案代码抄下来, 就能实现自己的目的, 在网上看了一下感觉也不是很难理解

  但是说实话要是想用的很熟练, 就不是一件简单的事情了

  首先来看一段代码, 求一个数字的阶乘的

public class qqq {
//计算一个数字的阶乘
    private static int fact(int a) {
        //1的阶乘本来就是1, 这里直接返回
        if(a==1) {
            return a;
        }
        else {
            return (a * fact(a-1));
        }
    }
    public static void main(String[] args) {
        System.out.println(fact(6));
    }
}

递归在很大程度上类似于循环, 但又不是循环, 递归是有去有回, 循环是有去无回, 很多情况下递归可以是代码更简单, 也更让人容易理解(这点倒是真没发现...),

再看一下这张图片

这就是用递归算法算一个数字的阶乘的过程图

原理就是

6的阶乘==6乘以5的阶乘

5的阶乘==5乘以4的阶乘

4的阶乘==4乘以3的阶乘

3的阶乘==3乘以2的阶乘

2的阶乘==2乘以1的阶乘

1的阶乘==1

依次往上就有了这么个东西:

6的阶乘==6乘以5乘以4乘以3乘以2乘以1............

于是6的阶乘就算出来了

时间: 2024-08-10 16:30:43

简单的数据整理, 递归算法的相关文章

Pandas数据处理实战:福布斯全球上市企业排行榜数据整理

手头现在有一份福布斯2016年全球上市企业2000强排行榜的数据,但原始数据并不规范,需要处理后才能进一步使用. 本文通过实例操作来介绍用pandas进行数据整理. 照例先说下我的运行环境,如下: windows 7, 64位 python 3.5 pandas 0.19.2版本 在拿到原始数据后,我们先来看看数据的情况,并思考下我们需要什么样的数据结果. 下面是原始数据: 在本文中,我们需要以下的初步结果,以供以后继续使用. 可以看到,原始数据中,跟企业相关的数据中(“Sales”,“Prof

power query(获取与转换):excel数据整理的新利器

在excel 2016版本中,"数据"选项卡下新内置了一个叫"获取与转换"组的功能.看起来简简单单的几个功能命令,真正应用起来,却别有洞天. 这个叫"获取与转换"的组,其实就是power query,什么是power query,不知道的自己去百度.回到这个功能上来说.为什么我要大力推荐这个"获取与转换"功能.因为它实在太强大了.甚至可以在excel中专门开辟一个研究方向.那到底这是一个什么样的功能?从字面意思理解,获取:就是

6.Struts2简单类型数据的接受

简单类型数据的接收 在Action类中定义与请求参数同名的属性, 即,要定义该属性的set方法,便能够使struts2自动接收请求参数并赋予同名属性. 简单类型数据的接受举例: 新建工程项目,名称为:receive_simple_params. Simple_Params_Action.java源码如下: package actions; public class Simple_Params_Action { private String username; private int age; p

使用storyboard实现页面跳转,简单的数据传递

在storyboard中,界面的跳转是通过segue来实现的,利用它,省去了方法内写入跳转的代码. 一 视图跳转 <StoryBoard下的视图跳转> 我们知道:segue共有三种类型:push,modal,和custom.如下图://01 简单说下这三个的作用:使用导航栏压进新的控制器(push),模态的加载视图控制器(modal),自定义(custom). 好了,废话少说,现在开始我们的旅行. 1,首先建立一个Single View 模板的项目,记得勾选上storyboard.然后打开它,

数据库 简单的数据查询

简单的数据查询 1.查询的基本结构: select[distinct] */列名 from table 表名 [where condition] [order by] 2.投影的操作:指定查询结果中能够显示的列 语法:select 列名列表 from 表名; (1):选择多列查询,列名之间用“,”隔开 (2):单列时,只单个. (3):若选择所有列,则用*代替. 3.表名前缀:本列无多大意义,但在复杂的多表查询的情况下,很有用. 语法:select 列名表名 from 表名; 4.列别名(as)

Hibernate系列(一):简单的数据插入

第一步,我们需要写一个POJO类:User.java package cn.itcast.hibernate.domain; import java.util.Date; public class User { private int id; private String name; private Date birthday; public int getId() { return id; } public void setId(int id) { this.id = id; } public

【转】Struts1.x系列教程(2):简单的数据验证

转载地址:http://www.blogjava.net/nokiaguy/archive/2009/01/archive/2009/01/13/251197.html 简单验证从本质上说就是在服务端来验证客户端提交的form中的数据.这种验证只是对form中的数据规则进行检查,如必须输入用户ID,价格不能小于0或是对email格式的验证.在这个验证过程中,并不需要访问数据库.因此,简单验证需要在用户提交form后,并且在服务器处理form中的数据之前进行. 在进行完简单验证后,如果form中的

简单数据库数据导出工具总结笔记

简单界面: 1. 左边用ListBox控件,添加一个控件变量m_lb,将数据从数据库导出,然后用m_lb.AddString()添加到ListBox中显示. 在OnInitDialog()中加入.CDBBase是封装的mysql类,一开始从数据库导出的汉字显示乱码,因为数据库用的utf-8,而程序这边用的gbk, 后来加了pDBbase->DBexecute("SET NAMES 'GB2312'");显示正确. 获取ListBox中元素个数用m_lb.GetCount(),返回

我的EntityFramework(2):简单的数据查询

原文:我的EntityFramework(2):简单的数据查询 在上一篇博文中,已经搭建了基本的框架,接下来就进行简单的数据查询,这里主要用了Linq 常见的数据集查询 var companyList = from c in dbs.Company where c.ID > 417154 orderby c.CompanyName descending select new { c.ID, c.CompanyName, c.Email, c.HtmlUrl }; gvList.DataSourc