assembly Hmmm集合斐波纳契数列

ccrfmcuu  于 2022-12-04  发布在  其他
关注(0)|答案(1)|浏览(154)

我需要写出并打印出斐波那契数列直到一个给定的整数(可以自己选择)我必须在嗯...汇编中这样做它会陷入无限递归,但我不知道为什么

00 read r4          # User input
01 setn r4 -1       # adds -1 to r4
02 setn r1 1        # r1 == 1
03 setn r2 0        # r2 == 0
04 setn r5 1        # used as the first number of the fibonacci sequence
05 write r5         # 1
06 jeqzn r4 13      # if r4 == 0, the fibonacci sequence stops
07 add r3 r1 r2     # r3 = r1 + r2
08 addn r4 -1       # r4 = r4 -1 
09 copy r2 r1       # r2 now equals r1
10 copy r1 r3       # r1 nog equals r3
11 write r3         # prints fibonacci number
12 jumpn 06         # checks if r4 == 0
13 halt             # stops

电流输出:

1
1
2
3
5
8
13
21
34
55
89
144
233
377
..
..

所需输出(示例):如果输入(r4)= 10

1
1
2
3
5
8
13
21
34
55

08 addn r4 -1(r4最终应该为0)
06 jeqzn r4 13(应检查何时为真,并应停止)
是什么阻止了它停止?

sbdsn5lh

sbdsn5lh1#

看起来第1行将r4(输入)设置为-1,而不是所需的减1,因此它应该是addn r4 -1
同样值得注意的是,当前的实现是迭代的,而不是递归的,并且循环看起来并不是无限的,而是非常长的,因为它必须从-1倒计数到0(假设addn不饱和)。

相关问题