2008/10/06 21:56

Assignment 7 재귀로 배열에서 제일 큰수 구하기

 .globl main
  .text
 main:
  la $a0, data
  lw $a1, size
  slt $t0,$a1,1
  bne $t0,1,A
  jr $ra
 A:
  add $s0,$zero,$zero
  add $s1,$zero,$a1
  sub $s1,$s1,1
  beq $s1,0,oneele
  addi $sp,$sp,-4
  sw $ra,0($sp)
  jal maximum
  lw $ra,0($sp)
  addi $sp,$sp,4
  j done

 oneele:
  lw $v0,0($a0)
  lw $ra,0($sp)
  addi $sp,$sp,4
  j done

 maximum:
   #$s0 holds lower integer.
   #$s1 holds upper integer.
  beq $s0,$s1,return

  sub $t2,$s1,$s0
  bne $t2,1,halffunc
  sll $t3,$s0,2
  sll $t4,$s1,2
  add $t5,$a0,$t3
  add $t6,$a0,$t4
  lw $t5,0($t5)
  lw $t6,0($t6)
  slt $t2,$t5,$t6
  bne $t2,1,return
  add $s0,$zero,$s1
  j return

 return:
  sll $t3,$s0,2
  add $t4,$a0,$t3
  slt $t5,$v0,$t4
  beq $t5,$zero,done
  lw $v0,0($t4)      
  jr $ra

 halffunc:
  addi $sp,$sp,-12
  sw $ra,0($sp)
  sw $s0,4($sp)
  sw $s1,8($sp)

  add $s1,$s1,$s0
  srl $s1,$s1,1
  jal maximum 

  lw $s0,4($sp)
  lw $s1,8($sp)

  add $s0,$s0,$s1
  srl $s0,$s0,1
  addi $s0,$s0,1
  jal maximum

  lw $s0,4($sp)
  lw $s1,8($sp) 
  lw $ra,0($sp)
  addi $sp,$sp,12
  jr $ra

 done:
  sw $v0,ans
  jr $ra

  .data
 size: .word 3
 data: .word 1, 2, 3
 ans: .word

교수 미쳤다
재귀로 배열에 있는 수들중에 젤 큰수를 찾아내랜다
그냥 반복문으로 하면 편할걸..
재귀 연습시킬려고하는건가부지..썅


 

Trackback 0 Comment 0