【问题标题】:c# print asterisk pyramid using recursionc# 使用递归打印星号金字塔
【发布时间】:2020-06-12 15:28:44
【问题描述】:

我被问到一个问题,女巫是: 编写一个获取 n 数(整数)的函数, 该程序将打印一个星号 * 金字塔 n 的高度.. 在第一行,该函数将打印一个“*”, 下一行它将再打印 2 个 * 等等。 这意味着如果我输入 4,结果需要看起来像这样, 但金字塔方式:

   *

  ***

 *****

*******

我必须以递归方式编写程序,没有任何循环.. 所以起初我写了这段代码,输入一个高度并将一个数字发送到一个打印模式的函数中,我知道我需要做另一个打印空格的函数,但我很困惑如何以递归方式做到这一点..

static void trianglePattern(int hight, int n)
    {
        if(n == 0)
        {
            return;
        }
        Console.WriteLine();
        trianglePattern(hight - 1, n + 1 * 2); 
    }
    static void Main(string[] args)
    {
        int hight;
        Console.WriteLine("enter hight:");
        hight = int.Parse(Console.ReadLine());
        trianglePattern(hight, 1);
    }

感谢您的帮助

【问题讨论】:

  • hight 应拼写为height
  • @Luuk 虽然这可能是真的,但这让他离实际解决方案或答案更近了一步。
  • 这里有一些关于如何解决这个问题的提示:首先,创建一个方法或一段代码,可以从该三角形输出一条线。换句话说,为该方法(或代码)提供一个数字,例如 4,它会打印一行包含 4 个星号的行,即。 ****。然后,暂时忽略这个方法/代码,并创建一个从 1 到 N 计数的递归方法,其中 N 是那个高度,并且只输出那个数字。然后,将两者结合起来,而不是直接输出数字,而是从第二个方法调用第一个方法。
  • 先使用循环编写它可能会有所帮助,这样您就知道您了解如何使三角形部分工作,然后将其重写为递归解决方案。
  • @LasseV.Karlsen:当然,我只是在开玩笑,但昨天我确实搜索了半个小时的错字,错字是heigth 而不是height ????

标签: c# visual-studio recursion a-star


【解决方案1】:

你可以使用下面的代码,它应该做你想做的事,

  // function to print a row 
                public static void printn(int num) 
                { 
                // base case 
                if (num == 0) 
                return; 
                Console.Write("*"); 

                // recursively calling printn() 
                printn(num - 1); 
                } 

// function to print the pattern 
                public static void pattern(int n, int i) 
                { 
                // base case 
                if (n == 0) 
                    return; 
                printn(i); 
                Console.WriteLine(); 

                // recursively calling pattern() 
                pattern(n - 1, i + 1); 
                }

你的主要应该是这样的:

int n = 5; // and the could be a user input using console.readLine() 
pattern(n, 1);

【讨论】:

    【解决方案2】:

    下一行应该比上一行少一个空格。

    如果你有4行,最后一行有0个空格,所以第一行有4个空格。

    【讨论】:

      猜你喜欢
      • 2015-03-30
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多