Mips中的斐波那契递归函数

问题描述

我正在尝试实践Mips中递归的工作方式。所以我试图写一个fibonacci函数fib。 起初我有addi $a0,$a0,n来写一个通用的解决方案,但是我想如果我想在Qtspim中检查结果,也许我需要添加一个实数作为参数。如果代码背后的想法是错误的,我并不想获得完整的答案,但是想要一些帮助,以便在Qtspim中运行它,并自行发现我的错误(逻辑错误)
这是我的代码:

.globl main
    .text
    main:
addi $a0,4


fib:
addi $sp,$sp,-8
sw $ra,4($sp) 
sw $a0,0($sp) 
slti $t0,1
beq $t0,1,L2  #if n<1     
beq $a0,L2  # if n=1
beq $t0,L1 # if n>1

#what to do when n<=1
L2:
addi $v0,$v0,1 
jr $ra 

#what to do when n>1
L1: 
addi $a0,-1 
jal fib
lw $a0,0($sp)
lw $ra,4($sp)
addi $sp,8
lw $t1,0($v0)
add $v0,$t1,$v0
jr $ra

li $v0,10
syscall

我收到这样的错误消息: 数据/堆栈中的错误地址读取:0x00000000

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)