java - 在 Java 中使用递归函数时出错
问题描述
我正在尝试运行以下递归函数。这里是-
public static void Q3(int n) {
if (n <= 0)
return;
StdOut.println(n);
Q3(n-2);
Q3(n-3);
StdOut.println(n);
}
有人可以帮助我了解此功能的控制流程吗?我尝试但无法理解如何调用此函数以及如何使用后续递归调用打印不同的值。此外,当我尝试在 java 程序中使用该函数时,我收到此错误消息-
Error:(19, 26) java: 'void' type not allowed here
错误在线 -
StdOut.println(Q3(n));
这是我用于函数调用的代码-
public static void main(String[] args) {
int n = Integer.parseInt(args[0]);
StdOut.println(Q3(n));
}
有人可以告诉我在调用函数时我犯了什么错误,我应该如何调用以避免任何错误?
解决方案
这是来自q3(6)
(Java 方法名称以小写字母开头)的调用树,输出在最右侧:
q3(6) +> print(6) 6
+> q3(4) +> print(4) 4
: +> q3(2) +> print(2) 2
: : +> q3(0)
: : +> q3(-1)
: : +> print(2) 2
: +> q3(1) +> print(1) 1
: : +> q3(-1)
: : +> q3(-2)
: : +> print(1) 1
: +> print(4) 4
+> q3(3) +> print(3) 3
: +> q3(1) +> print(1) 1
: : +> q3(-1)
: : +> q3(-2)
: : +> print(1) 1
: +> q3(0)
: +> print(3) 3
+> print(6) 6
您将观察到此处给出的输出与您正在运行的程序一致。
对于您的错误消息,请参阅此问题:“'void' type not allowed here”错误(Java)
推荐阅读
- css - nth-child 不使用 CSS 表格单元格
- mysql - MySQL LOCATE - POSITION 返回错误的数字
- solr - WCS 搜索(SOLR)过滤器查询以包含或排除给定的 catalog_id 类别
- .net-core - 您如何创建在 .Net Core 中不执行任何操作的身份验证方案?
- javascript - 基本 Vue 问题:将 fullpage.js 包装器与其他行为集成
- mongodb - Mongodb - 从数组聚合项,匹配项属性或子数组项属性
- idris - 使用达到一定等价的类型
- reactjs - FormDataConsumer 内的 ReferenceArrayInput 不返回数据
- javascript - 无法建立隧道套接字,statusCode=503,ECONNRESET
- python - 生成器只进行 12 次迭代——无论批量大小