2014-01-20 57 views
0

我只是找不到在楓以下代碼中的錯誤。 一直在尋找相當長的吧:Maple中未終止的循環

L:=[seq(i*0,i=0..12)]; 
rond:=false; 
x:=1; 
while(rond=false) do 
if(L[x]=1) then rond:=true; 
else L[x]:=1; x:=(2*x+11)mod 13; 
end if; 
end do; 

它給出了一個無端接環路誤差。爲什麼?

回答

1

我收到「無效的下標」錯誤。經過一次循環後,x變爲0(2 * 1 + 11模13 = 0)。零不是列表L的有效索引。列表索引從1開始。

順便說一句,您應該使用矢量或數組代替列表。對列表條目進行分配效率不高,並且在列表很長時,Maple根本不會允許它。

您可以通過12簡單地

L:= Array(0..12); 

它會自動初始化爲0使l對於索引0的數組。

+0

可能any1遇到這個相同的問題,我解決了通過刪除後面的圓括號,如果。好像你不應該把它們放在那裏。 此外,在我的代碼中,它需要是L [x + 1],因爲楓樹從1開始計數而不是0。 – user3191960