java - 为什么这个递归方法返回 400 而不是 404?
问题描述
为什么该方法返回 400?值“x”从 5、15、45、135、405、404、403、402、401、400 开始。我不知道为什么。请解释。
public int go(int x) {
if(x < 300)
x = go(x * 3);
return x - 1;
}
解决方案
它将根据您最初调用它的方式返回不同的值。如果您最初使用 5 调用它,它将返回 400,因为一旦达到 135,您将深入递归函数的 4 层。
所以它确实返回 404 - 给调用者,调用者返回 403 给它的调用者,它返回 402 ......直到它到达 400,此时它在第一个调用者处,这是你正在打印的值。
这就是递归函数的工作原理。
go(go(go(go(go(405)))))
如果不清楚,请尝试打印结果,因为当递归完成时,这就是您在示例中有效的结果。
推荐阅读
- c# - 不确定代码是否并行运行。控制台应用程序中的任务
- vue.js - 为什么动态组件在 vue3 中不起作用?
- c++ - 你可以在一个库中实现多个头文件吗?
- laravel - 在私有存储桶中托管亚马逊 s3 上的上传,从 Laravel 中访问 url
- c# - 右键单击 UWP 的 ListBox 选择项目
- r - 从 NetCDF 中提取矩阵并将其转换为栅格 - 行问题 - R
- http - Flutter Web Http 请求奇怪的响应
- node.js - 如何使用节点 js 发送电子邮件
- php - 提交 Laravel 后如何在文件中创建和保存数据
- c# - 来自 IPublishedContent 的 Umbraco 8 渲染图像