33 lines
932 B
Awk
33 lines
932 B
Awk
# syntax: GAWK -f SUDAN_FUNCTION.AWK
|
|
BEGIN {
|
|
for (n=0; n<=1; n++) {
|
|
printf("sudan(%d,x,y)\n",n)
|
|
printf("y/x 0 1 2 3 4 5\n")
|
|
printf("%s\n",strdup("-",28))
|
|
for (y=0; y<=6; y++) {
|
|
printf("%2d | ",y)
|
|
for (x=0; x<=5; x++) {
|
|
printf("%3d ",sudan(n,x,y))
|
|
}
|
|
printf("\n")
|
|
}
|
|
printf("\n")
|
|
}
|
|
n=1; x=3; y=3; printf("sudan(%d,%d,%d)=%d\n",n,x,y,sudan(n,x,y))
|
|
n=2; x=1; y=1; printf("sudan(%d,%d,%d)=%d\n",n,x,y,sudan(n,x,y))
|
|
n=2; x=2; y=1; printf("sudan(%d,%d,%d)=%d\n",n,x,y,sudan(n,x,y))
|
|
n=3; x=1; y=1; printf("sudan(%d,%d,%d)=%d\n",n,x,y,sudan(n,x,y))
|
|
exit(0)
|
|
}
|
|
function sudan(n,x,y) {
|
|
if (n == 0) { return(x+y) }
|
|
if (y == 0) { return(x) }
|
|
return sudan(n-1, sudan(n,x,y-1), sudan(n,x,y-1)+y)
|
|
}
|
|
function strdup(str,n, i,new_str) {
|
|
for (i=1; i<=n; i++) {
|
|
new_str = new_str str
|
|
}
|
|
return(new_str)
|
|
}
|