我是MIPS的新手,並且正在嘗試編寫遞歸程序。該程序將計算f(N)
,其中N
是一個大於零的整數。 f(N)= 3*(N-1)+f(N-1)+1
。基本情況是f(0)=2
。但是,當我嘗試運行我的程序時,它會無限期地運行,所以我猜測遞歸調用永遠不會結束。我似乎無法找到問題所在。我的代碼如下。MIPS遞歸程序
.data
prompt: .asciiz "Please enter a number"
.text
.globl main
main:
li $v0, 4
la $a0, prompt
syscall
li $v0, 5
syscall
move $a0, $v0
jal factfunc
move $a0, $v0
li $v0, 1
syscall
li $v0, 10
syscall
factfunc:
addiu $sp, $sp, -8
sw $ra, 4($sp)
sw $s0, 0($sp)
move $s0, $a0
blez $s0, endCondition
addi $a0, $a0, -1
jal factfunc
li $s1, 0
li $s2, 0
addi $s1, $s0, -1
move $s2, $s1
addu $s2, $s2, $s2
addu $s1, $s2, $s1
addu $v0, $v0, $s1
addi $v0, $v0, 1
cleanUp:
lw $s0, 0($sp)
lw $ra, 4($sp)
jr $ra
endCondition:
li $v0, 2
b cleanUp
我真的很感謝任何幫助。謝謝!
'F(n)'的函數在哪裏?不應該有一個調用它,因爲這是遞歸的? – jww 2014-09-27 03:49:47