由于第二次递归调用,我无法想象程序的执行方式。解决这个问题最简单的方法是什么?
public class Recursion
{
public static void main(String[] args)
{
f(3);
}
public static void f(int x)
{
if(x>0)
{
System.out.println(x + "top");
f(x-1);
System.out.println(x + "bottom");
f(x-1);
}
System.out.println("bert");
}
}
最佳答案
最终,将构建以下树:
\
/\
/ \
/\ /\
/\/\/\/\
将每个分支点视为对具有特定值的 f()
的调用(3 是第一个分支点,2 是下一个分支点,然后是 1,然后是 0)。
一步一步:
第一个调用 f(3) 是顶部的行。
\
下一个调用是f(2)
:
\
/
/
下一个调用是f(1)
:
\
/
/
/
下一个调用是f(0)
:
\
/
/
/
/
然后控制返回上一层,下一次调用再次是f(0)
:
\
/
/
/
/\
等等:
\
/
/
/\
/\
\
/
/
/\
/\/
\
/
/
/\
/\/\
然后另一侧重复该模式。
关于java - 一种方法中的双重递归,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53807930/