我正在試圖用遞歸找到兩個數字的GCD。 這段代碼是我迄今爲止所做的,但顯然它進入了一個無限循環,我無法理解爲什麼以及如何解決這個問題。 我將不勝感激一些幫助MIPS中遞歸的兩個數字的GCD
.data
string1: .asciiz "Enter the first number: "
string2: .asciiz "Enter the second number: "
string3: .asciiz "GCD is : "
.text
li $v0,4
la $a0,string1
syscall
li $v0, 5
syscall
add $s0,$v0,$zero #s0 = first number
li $v0,4
la $a0,string2
syscall
li $v0, 5
syscall
add $s1,$v0,$zero #s1= second number
slt $t0,$s0,$s1
beq $t0,$zero,L # if first number < second number , swap
add $t1,$s0,$zero
add $s0,$s1,$zero
add $s1,$t1,$zero
L:
add $a0,$s0,$zero # put first number in $a0 as input argument
add $a1,$s1,$zero # put second number in $a1 as input argument
jal GCD
GCD:
addi $sp,$sp,-4
sw $ra,0($sp)
bne $a1,$zero,L1 # base case condition
add $v0,$zero,$a0 # if base case is true
addi $sp,$sp,4
jr $ra
L1:
div $a0,$a1
add $a0,$a1,$zero
mfhi $a1
jal GCD
lw $ra,0($sp)
addi $sp,$sp,4
jr $ra
add $s3,$v0,$zero # put result in $s3
li $v0,4
la $a0,string3
syscall
li $v0,1
add $a0,$s3,$zero
syscall
在調試器中運行你的程序會給你一些關於它在哪裏以及爲什麼會卡住的提示。 – Michael