AP CSA考试备考:stars(5)递归方法执行逻辑解析求助
AP CSA递归方法stars(5)执行详解
先看完整方法代码:
public static void stars(int num) { if (num == 1) { return; } stars(num - 1); for (int i = 0; i < num; i++) { System.out.print("*"); } System.out.println(); }
为什么不会无限循环?
递归的核心是终止条件:当num == 1时,方法直接return,不会继续调用自身,所以递归会在num=1时停止,不存在无限循环。
分步拆解stars(5)的执行流程
递归是先“递推”到最底层,再“回溯”执行后续代码,具体步骤如下:
- 调用
stars(5):num≠1,先执行stars(4),自身的for循环暂时不执行 - 调用
stars(4):num≠1,执行stars(3),自身的for循环暂时不执行 - 调用
stars(3):num≠1,执行stars(2),自身的for循环暂时不执行 - 调用
stars(2):num≠1,执行stars(1),自身的for循环暂时不执行 - 调用
stars(1):num==1,直接return,回到stars(2)的调用位置 - 执行
stars(2)的for循环:打印2个*后换行 → 输出** - 回到
stars(3)的调用位置,执行for循环:打印3个*后换行 → 输出*** - 回到
stars(4)的调用位置,执行for循环:打印4个*后换行 → 输出**** - 回到
stars(5)的调用位置,执行for循环:打印5个*后换行 → 输出*****
最终输出结果
** *** **** *****
内容的提问来源于stack exchange,提问作者Theo Brundin
相关产品推荐
相关产品推荐

