下面分享一下mips汇编语言里递归函数的代码,以斐波那契数列为例,如有错误请各位批评指正!

.text
main:li $v0 5syscallsw $v0 0($sp) #把n存入栈顶li $t0 0sw $t0 -4($sp) #存入当前结果=0li $s0 2 #s0是常数2jal fbnq
end:li $v0 1lw $t0 -4($sp) #读取结果,然后打印move $a0 $t0syscallli $v0 10 syscall
fbnq:subi $sp $sp 12  #先移动指针sw $ra 4($sp) #存入当前跳转位置(记住要先jal再存$ra才是jump的位置)lw $t0 12($sp) #取出nble $t0 $s0 else #如果n<=2,跳转到else语句,为结果赋值1subi $t0 $t0 1 #n-1sw $t0 0($sp) #存n-1入栈jal fbnqlw $t1 -4($sp) #把算好的n-1的结果保存到n中备用sw $t1 8($sp) #保存到n中#继续算n-2lw $t0 12($sp) #取出nsubi $t0 $t0 2 #n-2sw $t0 0($sp) #存n-2入栈jal fbnqlw $t1 -4($sp) #把n-2的结果取出来lw $t2 8($sp) #取出n-1算好的结果add $t3 $t1 $t2 #相加,得到fbnq(n-1)+fbnq(n-2)sw $t3 8($sp) #存到n中lw $ra 4($sp)addi $sp $sp 12jr $ra #返回else: #当n<=2的情况,直接赋值1lw $ra 4($sp)li $t1 1sw $t1 8($sp)addi $sp $sp 12jr $ra

MIPS递归:斐波那契数列相关推荐

  1. python函数递归 斐波那契数列

    4.7 python函数递归 斐波那契数列 代码:(利用递归.format输出等) def fibonacci(n):if n==1 or n==2:f=1else:f=fibonacci(n-1)+ ...

  2. 【数据结构】递归斐波那契数列的时间复杂度、空间复杂度

    递归斐波那契数列的时间复杂度相对于循环等函数而言并不容易看出来,下面通过斐波那契数列的程序进行图解: long long Fib(size_t N) {if (N < 3)return 1;re ...

  3. Java实现递归 斐波那契数列 阶乘

    Java实现递归 斐波那契数列 阶乘 阶乘 /*** 使用递归算法求阶乘* 求阶乘 * 5!=5*4*3*2*1; * * 1=1;* 2!=2*1!;* 3! = 3*2!;* 4! = 4*3!; ...

  4. C语言递归:斐波那契数列

    斐波那契数列指的是这样一个数列:1,1,2,3,5,8, 13, 21, 34, 55, 89, 144, ... 原理: 通过观察我们发现,从第三个数开始,每一个数等于前两个数之和. 递归求斐波那契 ...

  5. 递归——斐波那契数列

    斐波那契数列 1.问题描述 斐波那契数列是指这样的数列:数列的第一个和第二个数都为1,接下来每个数都等于前面2个数的和.给出了一个正整数a,要求输出斐波那契数列中第a个数. 2.输入数据 第一行是测试 ...

  6. python-循环递归斐波那契数列

    1. 循环实现斐波那契数列 输入n,输出前n个斐波那契数列: n = int(input())first = 0 second = 1 third = 1for i in range(0,n):pri ...

  7. C++递归斐波那契数列

    第一种 //斐波那契数列 // 0 1 1 - //从第1个开始 代码 #include<iostream> #include<cmath> using namespace s ...

  8. 经典递归——斐波那契数列,汉诺塔

    斐波那契 汉诺塔 0 1 1 2 3 5 8 13 21 int fibonacci(int a){if(a==0)return 0;else if(a==1)return 1;elsereturn ...

  9. (递归)斐波那契数列

    题目 f1=f2=1,fn=afn−1+bfn−2(n>2)f1=f2=1,f_n=af_{n-1}+bf_{n-2}(n>2)f1=f2=1,fn​=afn−1​+bfn−2​(n> ...

  10. 剑指offer面试题10- II. 青蛙跳台阶问题(动态规划)(递归)(斐波那契数列)

    题目描述 一只青蛙一次可以跳上1级台阶,也可以跳上2级台阶.求该青蛙跳上一个 n 级的台阶总共有多少种跳法. 答案需要取模 1e9+7(1000000007),如计算初始结果为:1000000008, ...

最新文章

  1. Activity的setResult方法
  2. EasyWechat中代金券的发放总结
  3. 移位操作提高代码的可读性_本地记录或类,以提高流操作的可读性
  4. java依赖注入_Java依赖注入选项
  5. Hibernate-HQL基础
  6. NameError: name 'random' is not defined
  7. HDU - 1281 棋盘游戏
  8. U盘美化(更换U盘logo和页面背景软件)
  9. 新系统基础优化--Centos6.6
  10. 数据结构视频教程哪个好
  11. java jaas_JAAS(auth和rbac哪个好)
  12. UCOSII实时操作系统启动原理和理解
  13. Java基础知识面试题(2021年最新版,持续更新...)整理
  14. Cookie顶级域名、二级域名、三级域名共享
  15. script标签中的 defer 和 async 属性
  16. 如何模拟自动鼠标点击或记录鼠标和回放
  17. cocos制作水滴粘连效果
  18. 卡通的平板卧推男孩动画特效
  19. 【Python】python之subprocess模块详解
  20. 休闲阅读——《只是为了好玩:Linux之父林纳斯自传》

热门文章

  1. 开源机器学习之MATLAB代码--LSTM-SVRNN(五)
  2. Qt 图片 等比例显示、放大、缩小、平移图像 显示
  3. KST-51单片机利用HC138芯片驱动数码管显示
  4. Android面试准备之Java基础
  5. 硬纪元干货|视+AR联合创始人涂意:AR将是下一代计算平台
  6. 装了就不舍得卸载,4款电脑必装软件,功能实用又免费
  7. 我的大学 --- 郭天祥【4】
  8. mysql如何查看事务日记_详解 Mysql 事务和Mysql 日志
  9. 信息系统项目管理师核心考点(五十五)配置管理员(CMO)的工作
  10. ABP 依赖注入(1)