0

我正在尝试在 KornShell (ksh) 中实现下面伪代码中给出的扩展欧几里得算法。

我对带有“:=”的行有问题-我不知道这些是什么意思。

我也遇到了多个返回变量的问题。

我该如何实施?

function extended_gcd(a, b)
    x := 0    lastx := 1
    y := 1    lasty := 0
    while b ≠ 0
        quotient := a div b
        (a, b) := (b, a mod b)
        (x, lastx) := (lastx - quotient*x, x)
        (y, lasty) := (lasty - quotient*y, y)       
    return (lastx, lasty)
4

1 回答 1

0

:= 部分 :

:= 不适用于 shell 脚本,对于分配,我们在脚本中使用简单的“=”,即 var="abcd";

:= 可以在其他工具中使用,例如在 make 中——它代表立即分配。

立即赋值的意思是变量在解析的那一刻被赋值。

还有其他可用的变体,例如 =? ... ETC。

fxn 返回值部分:

这是一个函数只能返回一个值的基本规则。

但是,如果您对能够在函数体之外使用多个变量感兴趣,那么 bash/korn/shell 通常没有任何特定概念作为局部变量。

默认情况下,您在脚本中拥有的任何变量都是全局的,即在整个 .... 中可用,但仅在当前 shell 的范围内。

您需要导出变量以使它们在子 shell 中可用。语法:导出变量名;

您还需要使用 {} 大括号来定义函数体。IE

  fxn_name()
    {
       var=$1;  ## if you want to use a variable 
      ...... 
        ....
       }

它的调用/调用是 fxn_name $arg ;

于 2013-05-23T20:51:08.890 回答