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

:=部分:

:= はシェルスクリプト用ではありません。割り当てには、スクリプトで単純な「=」を使用します。つまり、 var="abcd" ;

:= は make のように、他のツールでも使用できます。ここでは、即時割り当てを表します。

即時割り当てとは、変数が解析された瞬間に値が割り当てられることを意味します。

=? のような他のバリアントも利用できます。...など

fxn戻り値部分:

関数は単一の値のみを返すことができるという基本的なルールです。

ただし、関数本体の外部で複数の変数を使用できることに関心がある場合は、一般に bash/korn/shell にはローカル変数として特定の概念はありません。

デフォルトでは、スクリプト内にある変数はすべてグローバルです。つまり、全体で使用できます....ただし、現在のシェルのスコープ内でのみ使用できます。

子シェルで使用できるようにするには、変数をエクスポートする必要があります。構文: export variable_name;

また、関数本体を定義するには {} 中かっこを使用する必要があります。すなわち

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

その呼び出し/呼び出しは fxn_name $arg です。

于 2013-05-23T20:51:08.890 に答える