Как ваша задача - сделать то, что делают компиляторы (перевести C в сборку), вам не нужно знать, что это рекурсивно. Компилятор C тоже не знал.
Чтобы решить, использует ли источник рекурсию, проблема IMHO NP-complete, так же как решить, содержит ли код бесконечный цикл и другие NP-полные задачи, поэтому компиляторы даже не утруждают себя попыткой оценить такое свойство , и они, безусловно, могут скомпилировать подобный код без этой информации.
Хотя в таком простом случае они бы, вероятно, заметили, и, возможно, оптимизировать что разворачивая несколько звонков или оценить вещь в постоянная для достаточно малых входов, это один хороший кандидат для перевода в for
цикла подведения n
элементов массива a
, но это опять не ваше дело в этой задаче.
Так что, если только рекурсия отбрасывает вас, то забудьте, что это рекурсия, и просто скомпилируйте ее на языке ассемблера, как есть, по строкам, инструкции по инструкции.
Пожалуйста, взгляните на [Как я могу задать и ответить на домашние вопросы?] (Http://meta.stackoverflow.com/questions/334822/how-do-i-ask-and-answer-homework-questions) – yeputons