java - 使用星号向前和向后打印直角三角形?

标签 java recursion

好吧,这是一个家庭作业问题,在解释完这个问题后我会告诉你我的简单问题。

示例:尺寸 4 由用户输入。最长的行包含四个“*”

编写一个递归方法 printPattern,它将向前和向后打印模式。该方法应该有一个参数 n 来指定模式中最长行的长度。如果 n 小于 1,该方法不应打印任何内容。

这是我的程序:

import java.awt.*;
import hsa.Console;

public class PrintPattern_RichardZhang
{
    static Console c;           // The output console

    public static void main (String[] args)
    {
        c = new Console ();

        int x;
        c.println ("Please enter the largest line: ");
        x = c.readInt ();

        //calling the method printPattern
        printPattern (x);

    } // main method


    //method for printing the pattern
    public static void printPattern (int x)
    {
        if (x > 1)
        {
            for (int i = 0 ; i < x ; i++)
            {
                c.print ("*");
            }
            c.println ();
            printPattern (x - 1);
        }

        for (int i = 0 ; i < x ; i++) //Print on the way back
        {
            c.print ("*");
        }
        c.println ();



    }
} // PrintPattern_RichardZhang class

我似乎不明白为什么每次打印时都会生成 x++ 。即使认为这是正确的xD。这就是我的问题。

   (int i = 0 ; i < x ; i++) //Print on the way back
    {
        c.print ("*");
    }
    c.println ();

最佳答案

你的逻辑是正确的。不过我会明确地写出退出条件。对于你的问题:在返回的路上它实际上并没有增加 x 。例如,当最初 x=4 时,调用该函数并打印 4 个星,然后在 x=3 时再次调用该函数。但是,这不再是相同的 x,因为 x 是每个函数调用的新局部变量。因此,当您调用 x=3 的函数时,之前的 x(即 4)将保留在内存(堆栈)中供以后使用,并且在调用的新函数中创建一个新变量 x 并分配给 3。这种情况一直持续到当 x=0 时调用该函数。此时内存中有5个名为x的变量,它们的值分别是4,3,2,1,0,它们都是调用函数的局部变量。当递归在 x=0 处停止时,暂停的函数调用将通过其各自的局部 x 变量(分别为 1、2、3、4)触发。因此,x实际上并没有增加。内存中的 x 值以与调用的递归函数相反的顺序使用。内存就像递归中的堆栈一样!我希望这有帮助。祝你好运!

关于java - 使用星号向前和向后打印直角三角形?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29334241/

相关文章:

java - 是否有任何适用于 Java 的假文件系统框架?

java - 间歇性 - SunCertPathBuilderException : unable to find valid certification path to requested target

java - 递归java方法,获取母亲、祖母、曾祖母等

haskell - 在递归调用中向后传播信息

node.js - 解析域时如何处理 CNAME?

java - 如何部署服务器客户端程序-java

java - 使用带花括号的 split() 时出错 "{"

java - 如何将图像从java-app发送到python?

python - 熄灯

ruby-on-rails - 在 Ruby 中迭代深度嵌套的哈希级别