java - 如果我将一个递归调用除以另一个,我会得到一个无限循环吗?
问题描述
我正在尝试用 Java 进行递归,我有这个方法:
public static int recursion(int n) {
if(n==1) {
return 2;
} else {
int test = (recursion(n-1))/(recursion(n-1));
return test;
}
}
如果我用 运行它n = 50
,它永远不会打印任何东西,所以我猜递归调用是无限的?有人可以解释为什么吗?
解决方案
它不是无限的,只是巨大的。您将进行大约 2^50 次递归调用。即使每次调用只需要一纳秒(这太低了),这也意味着总运行时间大约为两周。
推荐阅读
- python - evorobotpy2 -- PyTypeObject 没有针对 Python 3.9 构建的 tp_print
- swiftui - SwiftUI - 显示 GoogleMobileAdsMediationTestSuite ViewController
- javascript - 未捕获的引用错误:
未在 HTMLSpanElement.onclick 中定义 - linux - 使用 CMake 安装后共享库未链接在一起
- reactjs - React-Router & useContext,无限重定向或重新渲染
- python - 有没有办法从 res1d 文件中的某个点获取上游里程?
- amazon-web-services - 从另一个 Lambda 函数调用的 AWS Lambda 函数在队列中运行陈旧请求
- babeljs - 如何在 React App 中启用私有方法语法建议?
- reactjs - Webpack 模块解析失败,引导 css
- c# - 实例化的预制件在层次结构中显示为非活动