mirror of
https://github.com/johnkerl/miller.git
synced 2026-07-28 18:21:52 +00:00
recursion UTs
This commit is contained in:
parent
2812e81051
commit
fdbc71e977
2 changed files with 132 additions and 0 deletions
|
|
@ -33376,6 +33376,98 @@ zee wye 8 0.5985540091064224 0.976181385699006 1008 2008
|
|||
hat wye 9 0.03144187646093577 0.7495507603507059 1009 2009
|
||||
pan wye 10 0.5026260055412137 0.9526183602969864 1010 2010
|
||||
|
||||
mlr --opprint --from ./reg_test/input/abixy put
|
||||
func f(n) {
|
||||
if (isnumeric(n)) {
|
||||
if (n > 0) {
|
||||
return n * f(n-1)
|
||||
} else {
|
||||
return 1
|
||||
}
|
||||
}
|
||||
# implicitly return absent
|
||||
}
|
||||
$o = f(NR)
|
||||
|
||||
a b i x y o
|
||||
pan pan 1 0.3467901443380824 0.7268028627434533 1
|
||||
eks pan 2 0.7586799647899636 0.5221511083334797 2
|
||||
wye wye 3 0.20460330576630303 0.33831852551664776 6
|
||||
eks wye 4 0.38139939387114097 0.13418874328430463 24
|
||||
wye pan 5 0.5732889198020006 0.8636244699032729 120
|
||||
zee pan 6 0.5271261600918548 0.49322128674835697 720
|
||||
eks zee 7 0.6117840605678454 0.1878849191181694 5040
|
||||
zee wye 8 0.5985540091064224 0.976181385699006 40320
|
||||
hat wye 9 0.03144187646093577 0.7495507603507059 362880
|
||||
pan wye 10 0.5026260055412137 0.9526183602969864 3628800
|
||||
|
||||
mlr --opprint --from ./reg_test/input/abixy head -n 5 then put
|
||||
subr s(n) {
|
||||
print "n = " . n;
|
||||
if (isnumeric(n)) {
|
||||
if (n > 0) {
|
||||
call s(n-1)
|
||||
}
|
||||
}
|
||||
}
|
||||
print "";
|
||||
call s(NR)
|
||||
|
||||
|
||||
n = 1
|
||||
n = 0
|
||||
|
||||
n = 2
|
||||
n = 1
|
||||
n = 0
|
||||
|
||||
n = 3
|
||||
n = 2
|
||||
n = 1
|
||||
n = 0
|
||||
|
||||
n = 4
|
||||
n = 3
|
||||
n = 2
|
||||
n = 1
|
||||
n = 0
|
||||
|
||||
n = 5
|
||||
n = 4
|
||||
n = 3
|
||||
n = 2
|
||||
n = 1
|
||||
n = 0
|
||||
a b i x y
|
||||
pan pan 1 0.3467901443380824 0.7268028627434533
|
||||
eks pan 2 0.7586799647899636 0.5221511083334797
|
||||
wye wye 3 0.20460330576630303 0.33831852551664776
|
||||
eks wye 4 0.38139939387114097 0.13418874328430463
|
||||
wye pan 5 0.5732889198020006 0.8636244699032729
|
||||
|
||||
mlr --from ./reg_test/input/abixy --opprint put
|
||||
func f(n) {
|
||||
return n+1;
|
||||
}
|
||||
$o1 = f(NR);
|
||||
$o2 = f(f(NR));
|
||||
$o3 = f(f(f(NR)));
|
||||
$o4 = f(f(f(f(NR))));
|
||||
$o5 = f(f(f(f(f(NR)))));
|
||||
$o6 = f(f(f(f(f(f(NR))))));
|
||||
|
||||
a b i x y o1 o2 o3 o4 o5 o6
|
||||
pan pan 1 0.3467901443380824 0.7268028627434533 2 3 4 5 6 7
|
||||
eks pan 2 0.7586799647899636 0.5221511083334797 3 4 5 6 7 8
|
||||
wye wye 3 0.20460330576630303 0.33831852551664776 4 5 6 7 8 9
|
||||
eks wye 4 0.38139939387114097 0.13418874328430463 5 6 7 8 9 10
|
||||
wye pan 5 0.5732889198020006 0.8636244699032729 6 7 8 9 10 11
|
||||
zee pan 6 0.5271261600918548 0.49322128674835697 7 8 9 10 11 12
|
||||
eks zee 7 0.6117840605678454 0.1878849191181694 8 9 10 11 12 13
|
||||
zee wye 8 0.5985540091064224 0.976181385699006 9 10 11 12 13 14
|
||||
hat wye 9 0.03144187646093577 0.7495507603507059 10 11 12 13 14 15
|
||||
pan wye 10 0.5026260055412137 0.9526183602969864 11 12 13 14 15 16
|
||||
|
||||
|
||||
================================================================
|
||||
MULTI-PART SCRIPTS
|
||||
|
|
|
|||
|
|
@ -4666,6 +4666,46 @@ run_mlr --from $indir/abixy put 'subr log() { print "hello record ". NR } call
|
|||
# Test variable-clear at scope exit; test read of unset locals.
|
||||
run_mlr --opprint --from $indir/abixy put '$o1 = a; local a=1000+NR; $o2 = a; a=2000+NR; $o3 = a'
|
||||
|
||||
# Test recursion
|
||||
run_mlr --opprint --from $indir/abixy put '
|
||||
func f(n) {
|
||||
if (isnumeric(n)) {
|
||||
if (n > 0) {
|
||||
return n * f(n-1)
|
||||
} else {
|
||||
return 1
|
||||
}
|
||||
}
|
||||
# implicitly return absent
|
||||
}
|
||||
$o = f(NR)
|
||||
'
|
||||
|
||||
run_mlr --opprint --from $indir/abixy head -n 5 then put '
|
||||
subr s(n) {
|
||||
print "n = " . n;
|
||||
if (isnumeric(n)) {
|
||||
if (n > 0) {
|
||||
call s(n-1)
|
||||
}
|
||||
}
|
||||
}
|
||||
print "";
|
||||
call s(NR)
|
||||
'
|
||||
|
||||
run_mlr --from $indir/abixy --opprint put '
|
||||
func f(n) {
|
||||
return n+1;
|
||||
}
|
||||
$o1 = f(NR);
|
||||
$o2 = f(f(NR));
|
||||
$o3 = f(f(f(NR)));
|
||||
$o4 = f(f(f(f(NR))));
|
||||
$o5 = f(f(f(f(f(NR)))));
|
||||
$o6 = f(f(f(f(f(f(NR))))));
|
||||
'
|
||||
|
||||
# ----------------------------------------------------------------
|
||||
announce MULTI-PART SCRIPTS
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue