使用递归调用实现N的阶乘

2023-11-11

递归的定义

程序调用自身的编程技巧称为递归( recursion)。递归做为一种算法程序设计语言中广泛应用。 一个过程或函数在其定义或说明中有直接或间接调用自身的一种方法,它通常把一个大型复杂的问题层层转化为一个与原问题相似的规模较小的问题来求解,递归策略只需少量的程序就可描述出解题过程所需要的多次重复计算,大大地减少了程序的代码量。递归的能力在于用有限的语句来定义对象的无限集合。一般来说,递归需要有边界条件、递归前进段和递归返回段。当边界条件不满足时,递归前进;当边界条件满足时,递归返回。

代码实现如下(Java)

public class Test01{
	public static void main(String[] args){
		System.out.println("请输入一个整数:");
		java.util.Scanner scanner = new java.util.Scanner(System.in);
		int N = scanner.nextInt();
		int result = factorial(N);
		System.out.println(N + "的阶乘是:" + result);
	}
	public static int factorial(int N){
		if(N == 1){
			return 1;
		}
		return N * factorial(N - 1);
	}
}

参考资料

  1. 百度百科
  2. 《零基础学java》by动力节点

 

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

使用递归调用实现N的阶乘 的相关文章

随机推荐

  • 严重: 子容器启动失败 java.util.concurrent.ExecutionException 信息: 正在摧毁协议处理器 ["http-nio-80"]WARNING: An illegal

    话不多说直接上错误 解决方案 由于一开始以为是tomcat和eclipseEE出现故障 将两个软件重新下载并配置环境但错误没有解决 然后又检查了JDK版本也没问题 最后肯定了是代码的问题 仔细检查后发现是servlet映射地址写重了 后来又
  • HAL库的RCC简介

    一 RCC的时钟树总览 时钟输入源有四个 选择器 预 分频器和倍频器 最终设置的频率 SYSCLK系统时钟 SYSCLK可以有三种方式得到 1 HSI内部高速时钟用的是RC振荡器 频率为8M 精度不高 没有经过分频器和倍频器 这种方式得到的
  • 空utf8文件占三字节的问题(Java空文本文件FileInputStream读取问题)

    1 文件创建情况 2 程序代码 public class Demo01 public static void main String args throws IOException File file new File a txt long
  • pycharm mysql 安装_pycharm安装mysql驱动包

    新的环境配置pycharm的项目时 发现pycharm不能连接到mysql数据库 由于安了java环境但是还没配置相关的库 并且jetbrains家的IDE一般都是java写的 于是猜想可能是java缺少mysql的驱动 1 先确保pyth
  • c++学习:2.变量声明和定义的关系

    为了支持分离式编译 c 语言将声明和定义区分开来 声明只有名字并无实体 定义创建于声明名字相关的实体 因此声明和定义最重要的区别 声明不申请存储空间 定义申请存储空间 变量能且只能被定义一次 但是可以被多次声明 注意这里说的变量定义和变量赋
  • Pytorch 自己搭建的一个神经网络

    目录 数据集 dogs Vs Cats import time import torch nn as nn import torch optim from torch autograd import Variable from torch
  • 数学建模之圈养湖羊的空间利用率

    数学建模之圈养湖羊的空间利用率 D题最新最全思路已出 欢迎后台私信咨询 1 问题 规模化的圈养养殖场通常根据牲畜的性别和生长阶段分群饲养 适应不同种类 不同阶段的牲畜对空间的不同要求 以保障牲畜安全和健康 与此同时 也要尽量减少空间闲置所造
  • 使用 Redis 统计在线用户人数

    在构建应用的时候 我们经常需要对用户的一举一动进行记录 而其中一个比较重要的操作 就是对在线的用户进行记录 本文将介绍四种使用 Redis 对在线用户进行记录的方案 这些方案虽然都可以对在线用户的数量进行统计 但每个方案都有一些自己特有的操
  • QT 学习笔记(十)

    文章目录 一 绘图 1 理论知识储备 2 画背景图 3 简单绘图 4 手动刷新窗口 二 绘图实现代码 1 主窗口头文件 widget h 2 主窗口头文件 widget cpp 由于每次代码都是在原有程序上修改 因此除了新建项目 不然一般会
  • java.net.BindException: Address already in use: bind

    报这个错误说明程序的端口被占用了 在windows server服务器下可以采取如下解决方案 查看日志报错 java net BindException Address already in use bind 查看程序使用的端口 发现por
  • seata多版本下载地址以及docker安装docker

    seata多版本下载地址https sourceforge net projects seata mirror docker安装seata youngyajun 博客园1 官方指南 地址 SEATA官方部署指南 可以根据自己情况配置安装 下
  • Mybatis一对多查询无法返回数组形式的整合信息

    在进行Mybatis一对多查询练习的时候 发现控制台打印的返回值只有一条数据 并没有想要的整合的数据形式 通过查找问题所在 发现问题原来是因为在配置
  • QT-基础控件

    目录 1 三态按钮的实现 2 普通按钮的下拉框 3 复选框 4 单选按钮 5 工具栏按钮 6 文本标签 7 编辑框 8 进度条 9 组合框 10 按钮对话框 1 三态按钮的实现 实现目标 按钮的三种状态 按下 释放 进入 切换不同的相似图片
  • 如何实现JWT自动续期?

    jwt token自动续期的实现原理如下 1 登录成功后将用户生成的 jwt token 作为key value存储到cache缓存里面 这时候key value值一样 将缓存有效期设置为 token有效时间的2倍 2 当该用户再次请求时
  • ubuntu系统下Hyperledger Fabric安装配置指南

    准备条件 1 安装go 我的版本是1 17 2 安装docker和docker compose 版本尽量高一点 apt install docker io apt install docker compose 3 安装git curl ap
  • bat 将指令执行结果赋给变量

    linux shell脚本将指令执行结果赋值给变量很容易 比如 bin bash file name ls wc l echo file name file list ls l awk print 1 NF echo file list 很
  • 夜深人静写算法(二十二)- 最小编辑距离

    文章目录 一 前言 二 最小编辑距离的定义 1 莱文斯坦距离 2 达梅劳 莱文斯坦距离 3 LCS 距离 4 汉明距离 三 最小编辑距离的求解 1 设计状态 1 插入 2 删除 3 替换 4 边界处理 2 状态转移方程 3 时间复杂度分析
  • 安装grub到U盘分区,实现多系统引导

    安装grub到U盘分区 实现多系统引导 目录 1 分区工具及分区类型 1 1 显示分区表和分区信息 1 1 1 fdisk l 1 1 2 gdisk l 1 1 3 parted l 1 2 常见分区类型 1 3 分区样例 1 3 1 B
  • Kubernetes滚动更新介绍及使用-minReadySeconds

    滚动升级Deployment 现在我们将刚刚保存的yaml文件中的nginx镜像修改为 nginx 1 13 3 然后在spec下面添加滚动升级策略 1
  • 使用递归调用实现N的阶乘

    递归的定义 程序调用自身的编程技巧称为递归 recursion 递归做为一种算法在程序设计语言中广泛应用 一个过程或函数在其定义或说明中有直接或间接调用自身的一种方法 它通常把一个大型复杂的问题层层转化为一个与原问题相似的规模较小的问题来求