gpt4 book ai didi

java - 这个递归循环代码是如何执行的

转载 作者:塔克拉玛干 更新时间:2023-11-03 05:01:55 25 4
gpt4 key购买 nike

我有一些代码行我无法理解代码是如何执行的,我的意思是程序流程。

代码:

1) public class RecurLoopTest {

2) public static void main(String[] args) {
3) printit(2);
4) }

5) private static int printit(int n){
6) if(n>0){
7) printit(--n);
8) }

9) System.out.print(n+",");

10) return n;
11) }

12) }

我认为输出应该是: 0,

但输出是: 0,0,1,

我在类里面做了很多次 DEBUG,我在调试时看到的流程:

  1. 从第 3 行开始执行,即以 2 作为参数调用 printit()。
  2. 第 6 行,如果条件检查 n 值是否大于零,则控制转到第 7 行,即 print() 通过将 n 值递减一次来再次调用。
  3. step 2 继续执行直到n值变为0,如果条件为假,则执行第6行。所以在第 9 行,SYSO 打印 0。
  4. 然后,无法理解,控件如何再次从第 10 行转到第 5 行??

最佳答案

在这个程序中 printit() 被调用了三次。

how the control again goes from line 10 to 5 ??

控制流程如下:

  • printit(0) -- n=0,打印"0,",返回0
  • printit(1) -- n=1,打印"0,",返回0
  • printit(2) -- n=2,打印"1,",返回1
  • main()

所以输出是: 0,0,1,为了更好地理解,在调试时在 return 语句中放置一个断点。

这是控制/内存流程图: enter image description here

编辑 1:或者 below图片说明: enter image description here

关于java - 这个递归循环代码是如何执行的,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23038993/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com