最小公倍数计算程序与我翻译出来的不一样.我不知道哪里错了...FW们看看?!(50)

楚辞

Unregistered / Unconfirmed
GUEST, unregistred user!
zxgbs(x,y: Cardinal): Cardinal; var m,n: Cardinal;begin m := x * y; n := y; if x < y then begin y := x; x := n; end; while n > 0 do begin n := x mod y; x := y; if n > 0 then y := n; end; Result := m div y;end;以下我手工翻译的假设x=6,y=100M=600;N=100;6<100;Y=6;X=100;100>0;N=4(100除以6的余数)X=64>0 then y=4End;Result=600/4我算出来=150.程序算出来是300.我的是错误的....
 
试着读些简单的程序,算是熟悉下....不知错在哪里?!
 
手工翻译时 while n > 0 这个循环你没有执行完,[:(]
 
哦...手工翻译时 while n > 0 这个循环你没有执行完,此时继续翻译如下L,请fw们再帮助看下,我翻译的对不对...谢谢了! while n > 0 do begin n := 6(第一次执行得到的值.) mod 4(第一次执行得到的值); n=2 x := y; x=4 if n > 0 then y := n; n=2>0 tehn y=2 然后,因为2>0再来一次; begin n:=4(第二次得到值)/2(第二次得到值) n=0(余数为0了) x=2; if n=0,不大于0 所以下面的语句不必执行; 然后结果就是: result:=600/2(这个余数2是第二次的计算结果) result=300了....
 
确认一下....
 
我的翻译最后结果对否?!请FW们给个准确见意....
 
貌似没问题,[:D]。这点自信都没有?实在不行也可以在单步走一遍阿。
 
是啊...的确缺少自信.单步走一遍如何走啊?!没有做过,请告知下步骤如何?!先谢谢了!
 
顶部