我如何用汇编语言解决以下序列:
R1 = -2 + 4-6 + 8-10 ..... + - N的
注意:N值作为输入
答案 0 :(得分: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:
答案 1 :(得分:-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);
}
您可以使用此site来获取汇编代码。