recursion - java中的递归函数?
问题描述
public class Main {
public static void main(String[] args) {
printDollars(7);
}
public static void printDollars(int n) {
if (n > 1) {
printDollars(n - 1);
}
for (int i = 0; i < n; i++) {
System.out.print("$");
}
}
}
printDollars() 函数执行后 n 的值如何增加。
解决方案
n 的值实际上每次迭代都会减一。
当7第一次进入函数时,逻辑检查值是否大于1。由于7>1,所以值(7-1)=6进入递归函数的下一层。它发生了好几次(6 到 5、5 到 4 等),直到函数达到一个。
需要注意的一件重要事情是,如果您只是从递归开始,则当代码到达 n = 1 的点时开始打印美元符号,因为要到达代码的那部分,机器必须克服所有的递归调用。所以第一个打印的'$'实际上是来自n = 1的调用,然后是n = 2,等等。
我建议您尝试打印出 n 而不是 '$',以便您更清楚地了解它的工作方式。
推荐阅读
- android - 从 Unity 发布到 FB 的链接
- c - 为什么 `mktime()` 会意外忽略某些时区的 .tm_isdst?
- c# - 对同一个 DBContext 使用多个连接字符串
- javascript - 以 ASP Web 表单预览上传的 .pdf 文件
- javascript - 获取提供旧数据的变量
- python - Windows Sublime Text,如何使用 Anaconda Python 而不是默认值
- xamarin.android - 如何在 VS2017 中修改宏 LLVMToolchainPrebuiltRoot?
- dart - 颤振错误:错误:无法在字段初始化程序中访问“this”以读取“computeMaxScale”
- nginx - Nginx 负载平衡不起作用测试 aws 服务器
- angular - Mat-Dialog & Popover z-Index