递归方法求n!阶乘

2023-05-16

递归的定义:在定义一个过程或函数时,出现调用本过程或者是本函数的成分,称之为递归。

通常需要用到递归的方法:

  1. 定义是递归的。(例如n!,Fibonacci数列问题)
  2. 数据结构是递归的(单链表的数据结构,二叉树的数据结构)。
  3. 问题的求解方式是递归的(汉诺塔问题)。
//用递归和非递归两种方式求n!问题
#include<iostream>
#include<system_error>
using namespace std;

int fun(int n) 
{
	if (n == 0 || n == 1) {
		return 1;
	}
	else {
		return n * fun(n - 1);
	}

}

int fun2(int n)
{
	int value = 1;
	if (n == 0 || n == 1) {
		return 1;
	}
	else {
		for (int i = 2; i <= n; i++) {
			value *= i;
		}
		return value;
	}

}

int main(int argc, char * argv[])
{
	int n;
	cout << "输入一个整数,按Q/q退出:" << endl;
	while (scanf_s("%d", &n) == 1)
	{
		if (n >= 0) {
			//递归方法
			//	cout << n << "!=" << fun(n) << endl;

			//非递归方法
			cout << n << "!=" << fun2(n) << endl;
		}
		else {
			cout << "输入数据有误,请重新输入一个正整数!" << endl;
		}
	}
	system("pause");
	return 0;
}

总结:对非法输入的处理,对循环输入的处理。

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

递归方法求n!阶乘 的相关文章

  • ELK Elasticsearch 笔记(四)信息统计分析与搜索提示

    Aggregations aggregations可以看做是对查询结构的二次汇总 xff0c 比如先查询出某个时间段的HTTP请求 xff0c 然后统计每天的数据 在aggregations中会用到 桶 buckets 的概念 所谓的 桶
  • ELK Elasticsearch 笔记(五)SpringBoot Elasticsearch

    在SpringBoot项目中使用 Elasticsearch https docs spring io spring data elasticsearch docs 3 2 7 RELEASE reference html preface
  • Python Django ORM

    一 ORM介绍 1 什么是ORM ORM 全拼Object Relation Mapping 中文意为 对象 关系映射 在MVC MVT设计模式中的Model模块中都包括ORM 2 ORM优势 xff08 1 xff09 只需要面向对象编程
  • 树莓派入门(一)—— 树莓派4B介绍

    树莓派由注册于英国的慈善组织 Raspberry Pi 基金会 开发 xff0c Eben Upton 埃 厄普顿为项目带头人 2012年3月 xff0c 英国剑桥大学埃本 阿普顿 xff08 Eben Epton xff09 正式发售世界
  • Python Scrapy 爬虫入门: 爬取豆瓣电影top250

    一 安装Scrapy cmd 命令执行 pip install scrapy 二 Scrapy介绍 Scrapy是一套基于Twisted的异步处理框架 xff0c 是纯python实现的爬虫框架 xff0c 用户只需要定制开发几个模块就可以
  • Java ThreadLocal

    ThreadLocal是什么 xff1f 定义 xff1a 提供线程局部 变量 xff1b 一个线程局部边用在多个线程中分别有独立的值 xff08 副本 xff09 特点 xff1a 简单 xff08 开箱即用 xff09 快速 xff08
  • /usr/bin/env: bash: No such file or directory 解决办法

    Git在Windows上将gradlew的行结尾从Unix样式 LF 转换为Windows样式 CRLF 在windows下新建的sh文件 copy到linux下有的也会报错 解决方法 一 根除问题 注意 xff1a 会删仓库 xff01
  • Windows远程连接后桌面蓝屏不显示桌面

    Windows远程连接不显示桌面 通过控制台的管理终端登陆服务器 xff0c 然后调出任务管理器 xff08 图片是阿里云的 xff0c 百度云同理使用VNC xff09 在任务管理器中新建任务 explorer 单击确认 xff0c 可能
  • rust axum项目实践

    cassie axum 介绍 基于rust axum 完成web端手脚架 基础权限 用户 缓存 验证 代码生成 js运行时 v8引擎 deno使用 rust axum web 是rust开发的web手脚架项目 前端项目 项目讲解 B站链接
  • rust axum 项目实践 deno js运行时集成

    rust axum使用deno runtime 使用场景 xff1a 例如在创建订单的过程中 订单创建完成之后 需要根据订单的金额 和订单下单数量进行 1 xff1a 增加用户积分 2 xff1a 赠送优惠券 3 xff1a 消息推送 对于
  • php页面中的条件判断——if标签使用

    lt if condition 61 34 name eq 1 OR name gt 100 34 gt value1 lt elseif condition 61 34 name eq 2 34 gt value2 lt else gt
  • 高通 Android 12/13获取IMIE号

    1 由于我们工厂smt需要显示imei号 xff0c 因此需要 2 查阅相关资料Android O 之后 xff09 Android 10之后进行限制 3 通过反射获取 imei号 反射获取 deviceId 64 param contex
  • docker笔记

    Docker 参考资料 https docs docker com https www runoob com docker docker tutorial html https blog csdn net huangjhai article
  • MathType批量修改公式字体和大小

    目录 1 背景 2 解决方法 1 背景 MathType应用在论文中时 xff0c 有时会因为排版问题批量修改公式字体和大小 xff0c 一个一个的修改不仅费时费力 xff0c 还容易出现错误 xff0c 本教程将详解如何在 MathTyp
  • 树莓派入门(七)—— 树莓派4Bwifi无线上网配置

    前面的文章中主要对树莓派4B进行了介绍 xff0c 并讲了如何对树莓派的操作系统进行管理 xff0c 包括烧录 备份 恢复等 xff0c 还讲了开机测试树莓派 从本文开始 xff0c 我们开启树莓派探索之旅 xff0c 本文我们先介绍树莓派
  • MathType公式对齐不正确

    MathType公式对齐不正确 1 软件环境 2 问题描述 x1f50d 3 解决方法 x1f421 4 1 通过标尺对齐4 2 通过输入具体的制表符位置对齐 1 软件环境 Windows10 教育版64位 Word 2021 MathTy
  • 无法处理页面,因为“页面捕捉”识别服务发生错误(6)

    无法处理页面 xff0c 因为 页面捕捉 识别服务发生错误 xff08 6 xff09 1 软件环境 x1f50d 2 问题描述 x1f50d x1f421 3 解决方法 x1f421 x1f914 4 结果预览 x1f914 1 软件环境
  • cv2.error: OpenCV(4.6.0) :-1: error: (-5:Bad argument) in function ‘seamlessClone‘

    Can 39 t parse 39 p 39 Sequence item with index 0 has a wrong type 1 软件环境 2 问题描述 x1f50d 3 解决方法 x1f421 4 结果预览 x1f914 1 软件
  • ubuntu双显卡、多屏幕,左上角光标一直闪烁无法进入系统或能进入系统但某个屏幕黑屏

    ubuntu双显卡 多屏幕 xff0c 左上角光标一直闪烁无法进入系统或能进入系统但某个屏幕黑屏 1 软硬件环境 1 1 软件环境 1 2 硬件环境 2 问题描述 x1f50d 3 解决方法 x1f421 3 1 左上角光标一直闪烁无法进入

随机推荐