java - 一种方法中的双重递归

标签 java recursion

由于第二次递归调用,我无法想象程序的执行方式。解决这个问题最简单的方法是什么?

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/

相关文章:

java - JPA+Hibernate+@Transactional注解的spring事务支持的奇怪行为

java - JFrame 不重绘

ruby - 将数字转换为 ruby​​ 中的单词 - 改进我的递归解决方案

c++ - 检查 C++ 模板值零失败

python - Vim 使用 python 递归定义突出显示

java - 获取所有子文件夹的列表

java - spring boot oauth ExceptionHandlerExceptionResolver : NestedServletException: nested exception is java. lang.StackOverflowError]

java - BackgroundPanel 我的背景图像覆盖了我的所有组件

java - 是否有一个 java.util.concurrent 类允许定期启动线程而不阻塞完成?

c++ - 使用递归函数查找字符串回文