无法理解递归阶乘

2023-12-11

我是递归新手,我无法理解如何计算此递归阶乘函数。

当我尝试用头脑运行代码时,我会这样想象它:

如果数字 = 4,

第一次返回:4 x 3

第二次返回:3 x 2

第三次返回:2 x 1

所以在我看来,它是 (4 x 3) * (3 x 2) * (2 x 1),但显然正确的回报应该是 4 X 3 X 2 X 1。我希望能够理解它是如何得到 4 X 3 X 2 X 1 的。

 public static long factorial(long number) {
        if (number <= 1)
           return 1;
        else
        {
            System.out.println(number + " x " + (number-1) );
           return number * factorial(number - 1);
        }
     }

任何帮助和解释将不胜感激。


你的可视化应该是:

如果数字 = 4,

第一次返回:4 x(第二次返回)

第二次返回:3 x(第三次返回)

第三次返回:2 x(第四次返回)

第四次返回:1

然后,如预期的那样,简化为 4 x 3 x 2 x 1。

基本上,您需要区分“返回值x”和“返回递归结果,传入值x”。

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

无法理解递归阶乘 的相关文章

  • 在Java中将*s打印为三角形?

    我在 Java 课程中的作业是制作 3 个三角形 一份左对齐 一份右对齐 一份居中 我必须为什么类型的三角形制作一个菜单 然后输入需要多少行 三角形必须看起来像这样 到目前为止 我能够完成左对齐的三角形 但我似乎无法获得其他两个 我尝试用谷
  • 如何在 Java 中访问嵌套的 HashMap?

    我有一个 Java 中的 HashMap 其中的内容 你们可能都知道 可以通过以下方式访问 HashMap get keyname 如果一个 HashMap 位于另一个 HashMap 中 即嵌套的 HashMap 我将如何访问内容 我可以
  • 如何使用 Maven Failsafe 插件运行 JUnit 5 集成测试?

    当我运行命令时 Maven Failsafe 插件找不到我的 JUnit 5 集成测试mvn clean failsafe integration test 尽管它可以找到文件 我有junit jupiter api and junit j
  • JavaFX 2.0 FXML 子窗口

    经过多次搜索我发现了这个问题如何创建 javafx 2 0 应用程序 MDI https stackoverflow com questions 10915388 how to create a javafx 2 0 application
  • 在 Java 中从 SOAPMessage 获取原始 XML

    我已经在 J AX WS 中设置了 SOAP WebServiceProvider 但我无法弄清楚如何从 SOAPMessage 或任何 Node 对象获取原始 XML 下面是我现在获得的代码示例 以及我试图获取 XML 的位置 WebSe
  • 尝试获取屏幕上绘制的每个随机圆圈的 x、y 坐标

    您好 我正在制作一款游戏 该游戏将在屏幕上创建随机圆圈 随机创建的圆圈的值为红色或绿色 我的问题是 我希望不仅能够确定用户何时单击其中一个圆圈 而且还能够确定他们最终单击的圆圈 红色或绿色 下面是我的代码 我的主要问题是试图找到将要绘制的圆
  • 具有 CRUD 功能的基于 Spring Web 的管理工具

    在 PHP Symfony 世界里有一个工具叫 Sonata Adminhttps sonata project org https sonata project org 基于 AdminLTE 模板 这是一款一体化管理工具 具有登录 菜单
  • java中的单链表和双向链表?

    在java中 哪个集合接口可以有效地实现单链表和双向链表 请问代码示例吗 毫不奇怪 实现双向链表的正确接口是 LinkedList 看Java文档 http docs oracle com javase 8 docs api java ut
  • OpenNLP 与斯坦福 CoreNLP

    我一直在对这两个包进行一些比较 但不确定该往哪个方向走 我简单地寻找的是 命名实体识别 人 地点 组织等 性别识别 一个不错的训练 API 据我所知 OpenNLP 和斯坦福 CoreNLP 提供了非常相似的功能 然而 Stanford C
  • 使用 JAX-WS 的 WebLogic 中没有模式导入的单个 WSDL

    如何使用 JAX WS 配置由 WebLogic 10 3 6 生成的 Web 服务 以将对象架构包含在单个 WSDL 文件声明 而不是导入声明 中 示例代码 界面 import javax ejb Local Local public i
  • Cucumber DataTable 错误 - io.cucumber.datatable.UndefinedDataTableTypeException:无法将 DataTable 转换为 cucumber.api.DataTable

    尝试使用 cucumber selenium java intelliJ 运行场景 但在其中一个步骤中出现有关 DataTable 的错误 在我开始使用测试运行程序并更改周围的一些内容之前 数据表工作正常并正确转换该步骤的参数 但我就是无法
  • java swing:向 JTree 项目添加自定义图形按钮

    我想在 JTree 中的项目右侧添加一个带有小图标的附加按钮 这可以做到吗 如果是这样 怎么办 thanks Clamp 你在这方面成功了吗 我想做同样的事情 但很难让 JButton 响应用户 设置渲染器以显示按钮的过程很顺利 但所有鼠标
  • 如何检查日期字符串的有效性?

    在我的项目中 我需要检查日期字符串是否计算为正确的日期对象 我决定允许 yyyy MM dd 和日期格式 年 月 日 和 年 月 日 小时 分钟 我如何检查它们是否有效 我的代码为 1980 01 01 和一些奇怪的日期 如 3837 05
  • Java 中处理异步响应的设计模式

    我读过类似问答的答案 如何在 JAVA 中创建异步 HTTP 请求 https stackoverflow com questions 3142915 how do you create an asynchronous http reque
  • 在 Freemarker 模板中检查 Spring 安全角色和记录的用户名

    有谁知道 freemarker 标签来检查 freemarker 文件中的 spring 安全角色和用户名 我从网络上的几个资源中发现以下代码将打印登录的用户名 但它没有打印用户名 而是打印 登录为
  • CXF:通过 SOAP 发送对象时如何排除某些属性?

    我使用 Apache CXF 2 4 2 当我将数据库中的某个对象返回给用户时 我想排除一些属性 例如密码 我怎样才能做到这一点无需创建临时的班级 有这方面的注释吗 根据 tomasz nurkiewicz 评论我应该使用 XmlTrans
  • java中的预增量/后增量

    有人可以帮助我理解为什么 int i 1 int j 1 int k 1 int l 1 System out println i i System out println j j System out println k k System
  • 使用自定义比较器在 Java 中创建 SortedMap

    我想创建一个TreeMap在 Java 中具有自定义排序顺序 排序后的键是字符串 需要根据第二个字符进行排序 这些值也是字符串 示例地图 Za FOO Ab Bar 您可以像这样使用自定义比较器 Comparator
  • Jackson 反序列化相当于 @JsonUnwrapped 吗?

    假设我有以下课程 public class Parent public int age JsonUnwrapped public Name name 生成 JSON age 18 first Joey last Sixpack 我如何将其反
  • 如何使用注释处理 Hibernate 和 Spring 中的连接查询?

    我正在使用 Spring 和 Hibernate 以及 MySQL 开发应用程序 我是 Hibernate 新手 完成了基本任务 现在我需要在选择查询中应用联接以使用注释从多个表中获取数据 我已经搜索过但仍然没有任何想法 这是我的数据库表和

随机推荐

  • 如何使用 jQuery 将 html 表格单元格更改为文本输入

    所以我有一个表格 如下所示 tbody thead tr th Date Registered th th Name th th Organisation th th Email th th Job Title th th LSA th t
  • 一旦我限制我的 Google API 密钥,它就不再起作用

    我有一个正在使用的 Google API 密钥 并且在 Google 地图上运行良好 我现在尝试在我的 Android 应用程序中使用 Google 地图距离矩阵 API 并且只有当我不将密钥限制在 Android 应用程序上时 我才能使其
  • WordPress 中的正则表达式错误分隔符

    我是正则表达式的新手 我有一个简单的疑问 我在 wordpress 中找到了这段代码 self preg replace wp admin i self 根据php net 上的文档 不允许作为分隔符 有人可以解释一下代码吗 你尝试过吗 从
  • 将文档字符串设置为 def 内的表达式

    我想设置func doc 作为表达式 within def def f My function help Set the docstring def g My function help An expression so not read
  • Azure DevOps:代表另一个用户创建评论

    我正在寻找一种代表另一个用户 模拟另一个用户 向工作项添加评论的方法 VssConnection connection new VssConnection new Uri url new VssClientCredentials WorkI
  • PHP - 关于将 reCAPTCHA 与 jQuery 结合使用的问题

    这是一个教程 说明如何将 jQuery 表单验证与 reCAPTCHA 结合起来 http snipplr com view 15563 jquery validating recaptcha with ajax 根据我的理解 上面的教程实
  • 如何排列图像 3x3?

    我有九张图像 如果我必须将它们排列为 3x3 这意味着 3 行和 3 列 最好的方法是什么 我应该使用 CSS 吗 3x3 图像网格 该 CSS 允许您 垂直居中图像 水平居中图像 允许各种尺寸的图像 小于网格尺寸的图像保持原始尺寸 不会出
  • WPF 数据模板教程

    我陷入了如何在 WPF 中使用 DataTamplete 的困境 有人知道一些教程或者有一系列教程来教如何使用它 我正在使用 MVVM 模式 所以如果你知道 mvvm 示例中的教程会更好 Tks 谷歌搜索 wpf datatempalte
  • jQuery“data”属性未经过 W3C 验证

    我想知道为什么这段 html 由于 data 属性而无法验证 XHTML 1 0 过渡 我已经四处寻找答案 并且我没有使用 jQuery 元数据插件 如果这很重要的话 有什么方法可以让它验证 或者转义它 这样验证器就看不到它吗 div Be
  • [Windows、Qt5、QMediaPlayer、QMediaPlaylist]:当前视频源更改时短暂的黑屏

    我正在使用 Qt5 QMediaPlayer 编写一个视频播放器 以随机播放一些视频 如下所示 int main int argc char argv QApplication a argc argv QMediaPlaylist play
  • 嵌入式Redis尝试连接真实Redis服务器,导致异常

    我正在尝试使用嵌入式 redisdev弹簧简介 我也有一个cloud连接到真实 Redis 的配置文件 但是 我的嵌入式 Redis 配置似乎尝试连接到真正的 Redis 这是我运行时遇到的错误dev轮廓 Caused by redis c
  • 复制字体时 CopyHere 无法按预期工作

    我制作了一个脚本 该脚本应该将一堆字体复制到 Windows 字体文件夹中 当我运行它时 我收到了我想要复制的文件名的输出 但没有复制任何内容 当我删除 For 循环并指定文件名时它会起作用 任何帮助表示赞赏 Const FONTS H14
  • Vue-router 无法捕获 webpack 模板中带有点的路由

    我从以下位置启动了我的应用程序网页包模板并添加了路线 edit filename to it 问题是 包含点的文件名由 Express 处理 而不是由我的 Vue 应用程序处理 换句话说 edit 123与路线匹配但是 edit 123 j
  • AttributeError:“列表”对象没有属性“_sa_instance_state”

    我收到以下错误 我不知道如何修复它 我认为这与is bestfriend关系 File usr local lib python2 7 dist packages flask app py line 1836 in call return
  • 工厂方法如何返回接口和抽象类的实例?

    执行服务Service 和 Service 是接口 因此只有抽象方法 这意味着它们的方法没有实现 那么我们如何调用 例如future get es submit and es shutdown 接口类型引用的方法 例如 为什么我们可以做以下
  • 让相机的视线方向看正面

    怎么看正面3D模型在WPF 我很困惑如何为 LookDirection 设置 X Y Z 我不知道当我设置 xyz 时会发生什么 也不知道相机在看哪里 我不知道同样的事情UpDirection 以下是我的相机属性 camera Positi
  • BigQuery - 移动中位数计算

    我有这样的月销售额数据 Company Month Sales Adidas 2018 09 100 Adidas 2018 08 95 Adidas 2018 07 120 Adidas 2018 06 155 and so on 我需要
  • C++11 基于范围的 for 循环条件是否在每个周期进行评估?

    for auto entity memoryManager getItems entity gt update mFrameTime 如果内存管理器包含 1000 个项目 memoryManager getItems 被调用 1000 次还
  • TestNG java.lang.NoClassDefFoundError:com/google/common/primitives/Ints

    我是学习 TestNG 的新手 我按照以下步骤操作 我创建了 testng 类 Test dataProvider 注册数据 我写了一个有四个参数的方法 DataProvider 呼叫数据提供商 然后弹出如下错误 TestNG java l
  • 无法理解递归阶乘

    我是递归新手 我无法理解如何计算此递归阶乘函数 当我尝试用头脑运行代码时 我会这样想象它 如果数字 4 第一次返回 4 x 3 第二次返回 3 x 2 第三次返回 2 x 1 所以在我看来 它是 4 x 3 3 x 2 2 x 1 但显然正