java - 递归问题 - 意外输出
问题描述
public class recursion {
void printMessage() {
System.out.println("Yo!");
}
// x = 1, y = 1
void add (int x, int y) {
if (x<4) {
int sum = x + y;
System.out.println(sum);
add(sum,x);
printMessage();
}
}
}
输出
2
3
5
Yo!
Yo!
Yo!
我不明白为什么该消息被打印了三遍?一旦 x 超过 3,不应该只调用一次打印消息函数吗?
解决方案
每次调用此函数时,它都会打印“Yo!”。如果您只想打印一次,您应该像这样编辑它:
void add (int x, int y) {
if (x<4) {
int sum = x + y;
System.out.println(sum);
add(sum,x);
return;
}
printMessage();
}
“return”会破坏函数,它不会继续你的代码(printMessage())。
希望这对您有所帮助。
推荐阅读
- url - Google 应用程序脚本,onclick 和 href 之间的优先级
- python - 为什么我的数据在图表中间被挤压?
- swift - Swift 5 - 从类到类传递数据的问题
- swift - SwiftUI 列表的性能问题
- bluetooth - 如何在代码视觉中修剪字符串的未知第一个字符
- facebook - 来自 Facebook 的 debug_token 响应不成功:input_token 中的 App_id 与查看应用程序不匹配
- xml - 恢复包含在多个文件中的相对链
- postgresql - 为什么我的烧瓶服务器无法使用 docker-compose 与 postgres 数据库通信?
- c# - 转换 Linq IQueryable
到 Linq IQueryable - r - 尝试将点添加到基本 R 图