Maple中未终止的循环

时间:2014-01-20 14:41:31

标签: while-loop 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 个答案:

答案 0 :(得分:1)

我收到“无效的下标”错误。在一次通过循环后,x变为0(2 * 1 + 11 mod 13 = 0)。零不是列表L的有效索引。列表索引从1开始。

顺便说一句,你应该使用Vector或Array代替L而不是列表。对列表条目进行分配效率很低,当列表很长时,Maple根本不会允许它。

你可以使L成为索引为0到12的数组。只需

L:= Array(0..12);

它会自动初始化为0。

相关问题