所以这里我有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 #
我的意思是看这个,它看起来像递归
int mystery(int n){
}
看起来好像从8点开始,但是我很快就迷失了神秘感。 似乎最终的情况是它等于0任何想法?
答案 0 :(得分:1)
这似乎是一种计算2^n-1
的复杂方式,其中n
是函数的输入。
C翻译可能如下所示:
int mystery(int n)
{
if (n != 0) {
return mystery(n - 1) + mystery(n - 1) + 1;
} else {
return 0;
}
}