2015-09-25 3 views
1

Мне было поручено реализовать рекурсивную функцию в MIPS. Эта функцияЧто означает эта рекурсивная функция?

function1 (п) = п-5 (если п < = 3)

в противном случае = 4 * function1 (п-1) - п * function1 (п-3)

Один из тестовых случаев, если n = 6, то результат равен 200.
Как вы получаете 200 от входа 6 в эту функцию? Мне кажется, что ответ должен быть 2. Есть ли что-то, что я не понимаю о рекурсии, или я неправильно понимаю эту функцию? Я так смущен

ответ

2

Вы, кажется, неправильно понимаете эту функцию. Вот шаги, которые я затем прибыть в 200:

function1(6) = 4*function1(5) - 6*function1(3) (by rule 2) 
function1(5) = 4*function1(4) - 5*function1(2) (by rule 2) 
function1(4) = 4*function1(3) - 4*function1(1) (by rule 2) 
function1(3) = 3-5 = -2 (by rule 1) 
function1(2) = 2-5 = -3 (by rule 1) 
function1(1) = 1-5 = -4 (by rule 1) 

Подставив назад ...

function1(4) = 4*-2 - 4*-4 = -8 - -16 = 8 
function1(5) = 4*8 - 5*-3 = 32 - -15 = 47 
function1(6) = 4*47 - 6*-2 = 188 - -12 = 200 
+0

Спасибо за показ меня. Я не видел такой функции в отношении MIPS и рекурсии, поэтому не совсем уверен, как все это получилось. – ASchmalzWorld

+0

@ASchmalzWorld. Это не имеет ничего общего с MIPS, это просто математическая функция. – immibis

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