-1

所以在这里我在mips中有这个功能。我正在尝试将其转换为 c。

1 mystery:  bne $0, $a0, recur  # 
2           li $v0, 0       #
3           jr $ra          #
4 recur:        sub $sp, $sp, 8     #
5           sw $ra, 4($sp)  #
6           sub $a0, $a0, 1     #
7           jal mystery         #
8           sw $v0, 0($sp)  #
9           jal mystery         #
10          lw $t0, 0($sp)  #
11          addu $v0, $v0, $t0  #
12          addu $v0, $v0, 1    #
13          add $a0, $a0, 1     #
14          lw $ra, 4($sp)  #
15          add $sp, $sp, 8     #
16          jr $ra          #

我的意思是只看这个,它看起来是递归的

诠释神秘(诠释n){

}

看起来事情从 8 点开始,但我很快就迷失了,因为我很快就迷失了。似乎最终情况是它等于 0

有任何想法吗?

4

1 回答 1

1

这似乎是一种复杂的计算方式,函数的输入在2^n-1哪里。n

AC 翻译可能看起来像这样:

int mystery(int n)
{
  if (n != 0) {
    return mystery(n - 1) + mystery(n - 1) + 1;
  } else {
    return 0;
  }
}
于 2013-03-15T18:19:39.193 回答