0

我如何用汇编语言解决以下序列:

R1=-2+4-6+8-10.....+-N

注意:N 值作为输入

4

2 回答 2

1

查看它的一些值以找到模式:

N     R1
2     -2
4     +2
6     -4
8     +4
10    -6
12    +6

所以,当N%4 == 0,那么R1 = N/2,当N%4 == 2,那么R1 = -(N/2 + 1)

因此,为了计算这一点,您将执行以下操作(伪代码,但很容易转换为汇编)

     if N%2 is not 0 then error: invalid input
     R1 = N/2
     if N%4 == 0 then jump to done
     R1 = R1 + 1
     R1 = -R1
   done:
于 2013-03-31T13:49:30.863 回答
-1
It is an arithmetico geometric progression with a = -2, d = -2 , r = -1
an = (a + (n-1)*d)*(r^(n-1))
N = an = 2*n*((-1)^n)
n = absolute(N) / 2                                                     -1
R1 = Sn
on solving you will get
R1 = ((-1)^n)*n - ( 1 + (-1)^(n-1) )/2                                  -2

您可以使用 eqn 1 和 2 来获得 R1。这是C中的示例

#include<math.h>

int main() { 
float nlast,n,r1;
nlast = 12;
n = abs(nlast) / 2;
r1 = pow(-1,n)*n - ( 1 + pow(-1,n-1) )/2;
return(r1);
}

您可以使用此站点获取汇编代码。

于 2013-03-31T14:30:01.820 回答