Recursion 递归绘图

Recursion 递归绘图,recursion,fractals,ascii-art,Recursion,Fractals,Ascii Art,我了解递归的基本原理,但当我遇到类似于hackerrank的问题时。我很快就搞不清楚该怎么做了 基本上,你必须画一个分形ascii树(由字母Y组成),每一层向下,Y的数量减半。我似乎无法理解基本步骤,因此我可以将其推广到其他层,如下所示: ____________________________________________________________________________________________________ __________________1_1_1_1_1_1

我了解递归的基本原理,但当我遇到类似于hackerrank的问题时。我很快就搞不清楚该怎么做了

基本上,你必须画一个分形ascii树(由字母Y组成),每一层向下,Y的数量减半。我似乎无法理解基本步骤,因此我可以将其推广到其他层,如下所示:

____________________________________________________________________________________________________
__________________1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1___________________
___________________1___1___1___1___1___1___1___1___1___1___1___1___1___1___1___1____________________
___________________1___1___1___1___1___1___1___1___1___1___1___1___1___1___1___1____________________
____________________1_1_____1_1_____1_1_____1_1_____1_1_____1_1_____1_1_____1_1_____________________
_____________________1_______1_______1_______1_______1_______1_______1_______1______________________
_____________________1_______1_______1_______1_______1_______1_______1_______1______________________
_____________________1_______1_______1_______1_______1_______1_______1_______1______________________
______________________1_____1_________1_____1_________1_____1_________1_____1_______________________
_______________________1___1___________1___1___________1___1___________1___1________________________
________________________1_1_____________1_1_____________1_1_____________1_1_________________________
_________________________1_______________1_______________1_______________1__________________________
_________________________1_______________1_______________1_______________1__________________________
_________________________1_______________1_______________1_______________1__________________________
_________________________1_______________1_______________1_______________1__________________________
_________________________1_______________1_______________1_______________1__________________________
__________________________1_____________1_________________1_____________1___________________________
___________________________1___________1___________________1___________1____________________________
____________________________1_________1_____________________1_________1_____________________________
_____________________________1_______1_______________________1_______1______________________________
______________________________1_____1_________________________1_____1_______________________________
_______________________________1___1___________________________1___1________________________________
________________________________1_1_____________________________1_1_________________________________
_________________________________1_______________________________1__________________________________
_________________________________1_______________________________1__________________________________
_________________________________1_______________________________1__________________________________
_________________________________1_______________________________1__________________________________
_________________________________1_______________________________1__________________________________
_________________________________1_______________________________1__________________________________
_________________________________1_______________________________1__________________________________
_________________________________1_______________________________1__________________________________
_________________________________1_______________________________1__________________________________
__________________________________1_____________________________1___________________________________
___________________________________1___________________________1____________________________________
____________________________________1_________________________1_____________________________________
_____________________________________1_______________________1______________________________________
______________________________________1_____________________1_______________________________________
_______________________________________1___________________1________________________________________
________________________________________1_________________1_________________________________________
_________________________________________1_______________1__________________________________________
__________________________________________1_____________1___________________________________________
___________________________________________1___________1____________________________________________
____________________________________________1_________1_____________________________________________
_____________________________________________1_______1______________________________________________
______________________________________________1_____1_______________________________________________
_______________________________________________1___1________________________________________________
________________________________________________1_1_________________________________________________
_________________________________________________1__________________________________________________
_________________________________________________1__________________________________________________
_________________________________________________1__________________________________________________
_________________________________________________1__________________________________________________
_________________________________________________1__________________________________________________
_________________________________________________1__________________________________________________
_________________________________________________1__________________________________________________
_________________________________________________1__________________________________________________
_________________________________________________1__________________________________________________
_________________________________________________1__________________________________________________
_________________________________________________1__________________________________________________
_________________________________________________1__________________________________________________
_________________________________________________1__________________________________________________
_________________________________________________1__________________________________________________
_________________________________________________1__________________________________________________
_________________________________________________1__________________________________________________

如果有人能给我一个正确的方向,将不胜感激

图像的结构如下所示:

   Y01
   Y11
---------
   Y02
   Y12
---------
   Y04
   Y14
---------
   Y08
   Y18
---------
   Y016
   Y116
字母Y的Y0x&Y1x:Y0x是分支,Y1x是trunc;x是构成字母所需的行数

例如,Y02和Y12-2条线形成分支,2条线形成主干

1---1
 1-1
  1
  1 
您可以注意到还有一个“规则”:当您开始绘制新字母(例如,从Yx2到Yx3)时,您复制最后一行

编辑: 假设图形保存在矩阵
charp[63][100]
我将编写2个函数(不是最佳方法,但您可以对其进行优化) -drawY-根据输入绘制Y字母 -drawPicutre-绘制Y的“层”


您只需要实现第二个函数drawPicture(…),它调用drawY。如果需要,您可以修改drawY。

您的图片与您的描述不匹配。您可以重申这个问题,因为后面的每一行都有一半的Y字符。第一行有32个Y字符,用空格分隔。下一行将有16个Y字符,位于第一行Y字符之间。你可以算出剩下的。向上是Ys的两倍,但我重新表述了这个问题,因为它将向下生成。我想你需要生成准确的图像,你能说出图像的大小吗:行x cols?很抱歉,延迟了,错过了更新。共有63行100列。我为您发布了一个答案,请让我知道这是否有帮助,或者您需要其他建议-我已经解决了这个问题:)就个人而言,我会从底部开始,一路向上;但这只是偏好的问题。我想,即使知道图像的结构,我也很难将其分解为递归步骤和基本情况。我有点明白你的意思,只是我无法通过挑战声明变量,所以矩阵不在表中。我要画出整个结构好吧,直到这一点,你才谈到变量:)但这并不重要,你只需打印到控制台,而不是将数据保存在矩阵中。您必须调整逻辑以适应直线只能增加的约束。基本的想法是一样的。谢谢你的帮助,我应该可以从这里找到答案。
drawY(int startPos, int stopPos, int*line, int lvl, int count)
{
   if(lvl>=count)
   {
     P[*line][(startPos+(stopPos-startPos))/2] = '1';
     P[*line + lvl][(startPos+(stopPos-startPos))/2 +count] = '1';
     P[*line + lvl][(startPos+(stopPos-startPos))/2 -count] = '1';
     (*line)--;
     drawY(startPos,stopPos,line,lvl,count+1);
   }

}

int line=63;
drawY(0,100, &line, 16, 1); // draws the first, and largest Y