⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 recurse.t

📁 UNIX下perl实现代码
💻 T
字号:
#!./perl## test recursive functions.#print "1..25\n";sub gcd ($$) {    return gcd($_[0] - $_[1], $_[1]) if ($_[0] > $_[1]);    return gcd($_[0], $_[1] - $_[0]) if ($_[0] < $_[1]);    $_[0];}sub factorial ($) {    $_[0] < 2 ? 1 : $_[0] * factorial($_[0] - 1);}sub fibonacci ($) {    $_[0] < 2 ? 1 : fibonacci($_[0] - 2) + fibonacci($_[0] - 1);}# Highly recursive, highly aggressive.# Kids, don't try this at home.## For example ackermann(4,1) will take quite a long time.# It will simply eat away your memory. Trust me.sub ackermann ($$) {    return $_[1] + 1               if ($_[0] == 0);    return ackermann($_[0] - 1, 1) if ($_[1] == 0);    ackermann($_[0] - 1, ackermann($_[0], $_[1] - 1));}# Highly recursive, highly boring.sub takeuchi ($$$) {    $_[1] < $_[0] ?	takeuchi(takeuchi($_[0] - 1, $_[1], $_[2]),		 takeuchi($_[1] - 1, $_[2], $_[0]),		 takeuchi($_[2] - 1, $_[0], $_[1]))	    : $_[2];}print 'not ' unless (($d = gcd(1147, 1271)) == 31);print "ok 1\n";print "# gcd(1147, 1271) = $d\n";print 'not ' unless (($d = gcd(1908, 2016)) == 36);print "ok 2\n";print "# gcd(1908, 2016) = $d\n";print 'not ' unless (($f = factorial(10)) == 3628800);print "ok 3\n";print "# factorial(10) = $f\n";print 'not ' unless (($f = factorial(factorial(3))) == 720);print "ok 4\n";print "# factorial(factorial(3)) = $f\n";print 'not ' unless (($f = fibonacci(10)) == 89);print "ok 5\n";print "# fibonacci(10) = $f\n";print 'not ' unless (($f = fibonacci(fibonacci(7))) == 17711);print "ok 6\n";print "# fibonacci(fibonacci(7)) = $f\n";$i = 7;@ack = qw(1 2 3 4 2 3 4 5 3 5 7 9 5 13 29 61);for $x (0..3) {     for $y (0..3) {	$a = ackermann($x, $y);	print 'not ' unless ($a == shift(@ack));	print "ok ", $i++, "\n";	print "# ackermann($x, $y) = $a\n";    }}($x, $y, $z) = (18, 12, 6);print 'not ' unless (($t = takeuchi($x, $y, $z)) == $z + 1);print "ok ", $i++, "\n";print "# takeuchi($x, $y, $z) = $t\n";{    sub get_first1 {	get_list1(@_)->[0];    }    sub get_list1 {	return [24] unless $_[0];	my $u = get_first1(0);	[$u];    }    my $x = get_first1(1);    print "ok $x\n";}{    sub get_first2 {	return get_list2(@_)->[0];    }    sub get_list2 {	return [25] unless $_[0];	my $u = get_first2(0);	return [$u];    }    my $x = get_first2(1);    print "ok $x\n";}$i = 26;

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -