Я следую за знаменитым курсом CS50.
Во время урока учитель показал программу, которая распечатывала пирамиду высоты, заданную в качестве ввода от пользователя:
#include <cs50.h>
#include <stdio.h>
void pyramid(int n);
int main (void)
{
int height = get_int("height:");
pyramid(height);
return 0;
}
void pyramid(int n)
{
if (n==0)
{
return;
}
pyramid(n-1);
for (int i=0; i<n;i++)
{
printf("#");
}
printf("\n");
}
Может кто-нибудь объяснить мне, что делает пирамида рекурсивной функции? Я отлаживаю его и вижу, что если входные данные проверяют, равно ли оно 0, то они вызывают себя до n == 0 и возвращаются. После этого отладчик переходит к l oop для и делает это n раз.
Следуя пути лайнера, он не должен go к для l oop. Зачем это нужно?
Большое спасибо за помощь!