javascript上でユークリッドの互除法で最大公約数を計算する。

a>bの条件下でしか動作しないが、まあいいだろう。

js> (function(a,b){return(r=a%b)<1?b:arguments.callee(b,r)})(1071,1029)
21
js> (function gcd(a,b){return(r=a%b)<1?b:gcd(b,r)})(1071,1029)
21


追記:対応したバージョン

js> function b(x,y){if(y==0){return x}else{if(x<y){return b(y,x)}else{return b(y,x%y)}}}
js> b(2,3)
1
js> b(10,15)
5
js> b=function(x,y){return y==0?x:x<y?b(y,x):b(y,x%y)}
function (x, y) {
    return y == 0 ? x : x < y ? b(y, x) : b(y, x % y);
}
js> b(10,15)
5