在递归中:为什么此代码中最后一行按顺序递增而不是递减

时间:2019-03-30 15:56:31

标签: java

如果我通过5作为参数值 我认为最后一行必须排列为升序而不是降序 简而言之,如果您能解释一下,我将非常感激!!

public void rec(int val)
{
    if(val == 0)
        return;

    for(int i = 0; i < val ; i++)
        System.out.print("*");

    System.out.println("#");

    rec(val - 1);

    System.out.println("No." + val);
}

当前输出:

*****#
****#
***#
**#
*#
No.1
No.2
No.3
No.4
No.5

2 个答案:

答案 0 :(得分:0)

像这样

public void rec(int val)
{
    if(val == 0)
        return;

    for(int i = 0; i < val ; i++)
        System.out.print("*");

      System.out.println("#");
      System.out.println("No." + val);
      rec(val - 1);

否则,最低记录中的System.out.println将首先被调用,然后备份

答案 1 :(得分:0)

您的问题尚不清楚,但是我想您想知道递归的工作原理。通常,所有方法都在堆栈上执行。方法的局部变量和方法的参数值在堆栈范围内。

请参见this视频,该视频以出色的堆栈视觉解释了递归阶乘。您将了解为什么您的代码会如此行事。

参见this视频,了解什么是堆栈/堆等。

尽管视频使用C ++编写,但是堆栈中方法执行的基本概念是相同的。