我有一个作业从我的uni在那里我必须打印一个三角形使用递归在C语言。我已经尝试写我的代码如下,但我不能找到我的错误。亲切的人可以指出我必须编辑的地方。
int tri(int x, int org);
int dreick(int x) {
return tri(x,x);
}
int tri(int x,int org) {
if (x == 0) {
return 0;
}
else {
return (x - 1, org);
}
for (int i = 0; i < (org - x); i++) {
printf("");
}
for (int j = 0; j <= x; j++) {
printf("*");
}printf("\n");
}
int main() {
int a = dreick(5);
printf("%d",a);
}
1条答案
按热度按时间n53p2ov01#
递归的工作原理如下:每个步骤接收一个参数,该参数指定了还需要做什么工作;如果不需要做任何工作,则返回而不做任何事情;否则,它将执行一个步骤的工作,然后使用指定要执行的剩余工作的参数的新值来调用自身。
在您的情况下,指定仍需执行哪些工作的参数可以是行号。
三角形打印代码可以在递归之外打印顶部(第0行的一颗星星)和底部(第N行的一排星),这样可以使事情变得简单。使用递归打印从1到N-1的每一行文本。
在递归的每一步中,打印一些空格、一个星号、更多的空格,然后再打印一个星号。空格的数量取决于行号。(您在三角形中的深度。)当达到N-1时,您就完成了。