2014-04-04 30 views
0

作出了一個程序尋找最大公約數,但由於某種原因該函數重複。爲什麼這個程序中的函數重複?帕斯卡爾

var p,q:integer; 
function nod(x,y: integer):integer; 
begin 
while y<>0 do nod(y,x mod y); 
result:=x; 
end; 
begin 
write('Enter two integers: '); 
read(p,q); 
write(nod(p,q)); 
end. 
+0

代碼使用'y'變量來決定何時停止循環,但是你從來沒有做任何改變'y'的價值,以使其停止。很顯然,你需要修正你的代碼,這樣'y'的值纔會在循環中改變,直到滿足中斷條件('y = 0')。 –

回答

1

您沒有更新y變量,循環也不會結束。

可能:

var p,q:integer; 
function nod(x,y: integer):integer; 
begin 
while y<>0 do 
    begin 
    y:= nod(y,x mod y); 
    end; 
result:=x; 
end; 
begin 
write('Enter two integers: '); 
read(p,q); 
write(nod(p,q)); 
end. 
+0

這不起作用 – user3484031