Программа, которую я закодировал, запрашивает у пользователя целочисленное значение, считывает это значение и находит наибольшую степень 2, которая равна или меньше значения, введенного пользователем. Например, пользовательский ввод 40 и вывод будет 5. У меня есть эта функция l oop, но я хочу написать ее рекурсивно и получить тот же результат. Вот фрагмент кода функции:
.ent largest
largest:
addi $sp, $sp, -4
sw $ra, 0($sp)
addi $t0, $a0, 0 # place the number passed in as parameter into $t0
li $t1, 1 # load 2^0 into $t1
li $t2, 0 # load 0 into $t2
loop: bgt $t1, $t0, done # if 2^n is larger than $t0, done, return n-1
mul $t1, $t1, 2
addi $t2, $t2, 1
b loop
done:
addi $a0, $t2, -1 # return n-1
lw $ra, 0($sp)
addiu $sp, $sp, 4
jr $ra # return from main method
.end largest
Я действительно не могу понять это. Если кто-нибудь сможет мне помочь, я буду очень признателен.