我有这个代码,但它没有完全按照我的要求执行 . 它正确地计算数学但在某些点打印出错误的值 .
例如,如果我输入15,它应该打印出以下内容:
15 46 23 70 35 106 53 160 80 40 20 10 5 16 8 4 2 1
我期待这个输出,因为它是基于此编码的
start : if (n == 1) stop ;
else if (n is even ) n = n/2;
else n = 3*n+1;
go to start ;
但确实如此
15 46 46 70 106 160 80 40 20 10 16 16 8 4 2
它也没有打印出1值,有人可以帮忙吗?我也很喜欢MIPS所以请保持基本水平
1 回答
正如您在上一个问题中所述,问题是原始C程序中的一个错误 - 即在输出后你将n除以2 .
解决这个问题
以上:
我可以验证这可以为您提供所需的结果 .