1

我想编写一个函数 SWAP 来交换 PARI 中的 2 个整数 a 和 b。此函数不返回任何值,但我希望函数外部的变量存储新值。我不知道如何解决这个问题。这是我的功能:

swap(a,b) = { t=a; a=b; b=t;}

然后我写:

u=2; v=3;
swap(u,v);

十个 u 仍然是 2 而 v 仍然是 3。我怎样才能重写这个函数来使 u=3 和 v=2?谢谢你。

4

1 回答 1

2

不幸的是,你不能swap为标量变量实现这样的函数。从 PARI/GP v2.13.0 开始,您可以通过引用使用~前缀的用户定义函数来传递容器变量(如列表、向量等),以修改其组件。因此,您可以针对 >= 2.13.0 版本的 PARI/GP 执行以下简单的解决方法:

swap(~a,~b) = {[a[1],b[1]] = [b[1],a[1]];};

u = [2]; v = [3];
swap(~u, ~v);
u
> [3]
v
> [2]
于 2021-05-12T10:50:57.983 回答