2016-06-10 2 views
1

Как я могу передать эту функцию итерационного рекурсивнойПреобразовать функцию итерационной рекурсивные

void triangulo(int max) 
    { 
     int i, j; 
     for(i = 1; i <= max; i++) 
     { 
      for(j = 0; j < i; j++) 
       printf("%d", j + 1); 
      printf("\n"); 
     } 
    } 

Кто имеет какие-либо идеи? или это невозможно сделать?

обновление

void triangulo(int n, int i, int j) 
{ 
    if(i <= n) 
    { 
     if(j < i) 
     { 
      printf("%d", j + 1); 
      triangulo(n, i, j + 1); 
     } 
     if (j == i) 
     { 
      printf("\n"); 
      triangulo(n, i + 1, 0); 
     } 
    } 
} 
+0

Изменение 'for' к' if', ветви которого являются последний случай и вызов функции –

+0

, пожалуйста, вы можете сделать это в псевдокоде – cheroky

ответ

1

Попробуйте это: Здесь я делаю i и j в качестве аргументов, потому что в каждой рекурсии они имеют разные значения.

void triangulo(int max,int i,int j) //make i and j as arguments 
{ 
    if(i<max) 
    { 
     if(j<max) 
     { 
      printf("%d",j); 
      triangulo(max, i, ++j);//dont use post increment operation 
     } 
     else 
     { 
      printf("\n"); 
      triangulo(max , ++i, 0); 
     } 
    } 
} 

Вообще,

  • использование if и else для состояния и
  • отправить аргументы в конце его как то, что может произойти в итерационном методе.
+0

Я хочу сделать полностью рекурсивный – cheroky

+0

Можете уточнить ... Я не могу понять @cheroky – Cherubim

+0

без использования какой-либо петли – cheroky

Смежные вопросы