第一次用 Maple 编程:“形式参数的非法使用”
我一直收到这个错误。这是代码(用于 GCD):
Euc := proc (a, b)
if b = 0 then a;
else c := b;
d := a mod b;
b := d; a := c;
end if;
end proc;
我从不使用 Maple,因为它让我头疼,而且文档是一场噩梦,但这个作业必须全部在 Maple 中完成......如果我在简单的 GCD 上遇到麻烦,我不要看到我在星期三写 RSA 和 El Gamal :s
编辑: 修复它
Euc := proc (a, b)
if b = 0 then a;
else c := b;
d := a mod b;
Euc(c,d);
end if;
end proc;
但任何我仍然想知道问题是什么,以防我必须再次做类似的事情。
I keep getting that error. Here's the code (it's for GCD):
Euc := proc (a, b)
if b = 0 then a;
else c := b;
d := a mod b;
b := d; a := c;
end if;
end proc;
I never use Maple because it gives me a headache and the documentation is a nightmare, but this assignment has to be done all in Maple... if I'm having trouble with simple GCD, I don't see me writing RSA and El Gamal by Wednesday :s
edit: Fixed it with
Euc := proc (a, b)
if b = 0 then a;
else c := b;
d := a mod b;
Euc(c,d);
end if;
end proc;
But any I'd still like to know what the problem was, in case I have to do something similar again.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
您的第一个版本尝试分配给过程的形式参数。这就是问题所在。
假设您调用原始
Euc
并为参数a
传入 12,为参数b
传入 8。在Euc
的主体内,当它在此实例中运行时,a
的计算结果为 12,而a
的计算结果不是您可以使用的名称做一个作业。当您尝试对Euc
内的a
或b
进行赋值时,您会看到该错误。Your first version attempted to assign to the formal parameters of the procedure. That was the problem.
Suppose you call your original
Euc
and pass in 12 for parametera
and 8 for parameterb
. Inside the body ofEuc
, as it runs in this instance,a
evaluates to 12 anda
does not evaluate to a name to which you can make an assignment. When you try and make an assignment toa
orb
insideEuc
then you see that error.