我需要写出并打印出斐波那契数列直到一个给定的整数(可以自己选择)我必须在嗯...汇编中这样做它会陷入无限递归,但我不知道为什么
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(应检查何时为真,并应停止)
是什么阻止了它停止?
1条答案
按热度按时间sbdsn5lh1#
看起来第1行将
r4
(输入)设置为-1,而不是所需的减1,因此它应该是addn r4 -1
。同样值得注意的是,当前的实现是迭代的,而不是递归的,并且循环看起来并不是无限的,而是非常长的,因为它必须从-1倒计数到0(假设
addn
不饱和)。