【发布时间】: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