2015-01-10 8 views
0

Известно, что в некоторых случаях итерация может быть преобразована в рекурсивный алгоритм. Как я могу переписать итерацию так же просто, как следующую, как рекурсию?Переписать простой итеративный алгоритм рекурсивно

for(i=0,i<500,i++) 
    row_multiply(); 

Я понимаю, что, как уже было сказано, что я должен попробовать что-то вроде ...

void recursiveSolution(int i) 

    { 
     raw_multiply(); 
     if (i< 499) 
      recursiveSolution(i+ 1); 
    } 

..., но я не уверен, о том, как иметь дело с базовым случаем и как структурировать когерентный код C для рекурсивного переписывания.

+0

Что вы уже пробовали? – verdammelt

+0

Пытаться что-то связанное с рекурсией, вероятно, станет хорошим местом для начала (как бы разъясняло вопрос). Если вы еще не понимаете рекурсию, возможно, изучите ее еще немного, прежде чем заниматься этим. Пример: [посмотреть его вживую] (http://ideone.com/cb9aEY) – WhozCraig

+0

Что вы подразумеваете под «базовым корпусом» ?? объясните пожалуйста. –

ответ

1

Может быть так?

void recursiveSolution(int count) 
{ 
    raw_multiply(); 
    if (count < 499) 
     recursiveSolution(count + 1); 
} 

, а затем запустить его

recursiveSolution(0); 
+0

Необходимо проверить 'count <500' (как это делает цикл for), * перед * вызовом' raw_multiply() ', поскольку это будет делать это 501 раз. – ryanpattison

+0

'raw_multiply' должен быть внутри if, тоже проблема – ryanpattison

+0

Не могли бы вы уточнить, что вы подразумеваете под", а затем запустить его recursiveSolution (0); "? – user

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