обратная печать с использованием рекурсии - PullRequest
0 голосов
/ 13 апреля 2020

Я только начал с рекурсии и, похоже, не мог понять, как произойдет следующее. Я хочу напечатать значения от i = 2 до i = 6. в настоящее время это печать в обратном порядке. Не могли бы вы мне помочь?

int l[][7] ={{0,0,0,0,0,0,0},{0,0,1,2,1,1,2},{0,0,1,2,1,2,2}};
int lstar = 1;
int recprint(int n, int i){
    if (i>n)
    {
        return lstar;
    }
    else{
        int m =  recprint(n, i+1);
        printf("i is %d and l[%d][%d] is %d \n", i, m, i , l[m][i]);
        return l[m][i];
    }
}
recprint(6, n);

Требуется вывод

i is 6 and l[1][6] is 2     
i is 5 and l[2][5] is 2     
i is 4 and l[2][4] is 1     
i is 3 and l[1][3] is 2      
i is 2 and l[2][2] is 1 

в обратном порядке

1 Ответ

0 голосов
/ 13 апреля 2020
void recprint(int i, int j, int val = 1) {
  if (i < j) {
    return;
  }
  recprint(i - 1, j, l[val][i]);
  printf("i is %d and l[%d][%d] is %d\n", i, val, i, l[val][i]);
}

recprint(6, 2);

Выход:

i is 2 and l[2][2] is 1 
i is 3 and l[1][3] is 2 
i is 4 and l[2][4] is 1 
i is 5 and l[2][5] is 2 
i is 6 and l[1][6] is 2 
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...