5-3 ���j�I�s�P�i�ܭӼƪ��޼�

JavaScript ªº¨ç¼Æ¤]¥i¥H¤ä´©»¼°j©I¥s¡]Recursive Calls¡^¡A¤]´N¬O»¡¡A¤@­Ó¨ç¼Æ¥i¥H©I¥s¥¦¦Û¤v¡C¨Ò¦p¡A¹ï©ó¶¥­¼¨ç¼Æ¨Ó»¡¡A§Ú­Ì¦³ n! = n*(n-1)!¡A¦]¦¹§Ú­Ì¥i¥H¼g¤@­Ó»¼°j¦¡ªº¶¥­¼¨ç¼Æ¡A¨Ò¦p¡G

Example¡]funcFact.htm¡^¡G

¨ä­ì©lÀɮפº®e¦p¤U¡G

­ì©lÀÉ¡]funcFact.htm¡^¡G¡]¦Ç¦â°Ï°ì«ö¨â¤U§Y¥i«þ¨©¡^
<html>
<head>
<meta HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=big5">
</head>

<body>
<h2 align=center>¥H»¼°j¤è¦¡¶i¦æ¶¥­¼¨ç¼Æªº­pºâ</h2>
<hr>

<script>
function fact(n){		// ¥H»¼°j¤è¦¡¶i¦æ¶¥­¼¨ç¼Æªº­pºâ
	if (n==0) return(1);	// µ²§ô±ø¥ó
	return(n*fact(n-1));	// »¼°j©I¥s
}

for (i=10; i<19; i++)
	document.write(i+"! = "+fact(i)+"<br>");
</script>

<hr>
</body>
</html>

Hint
»¼°j¦¡ªº¨ç¼ÆÁöµM¦n¥Î¡Aµ{¦¡½X¤]«Ü²µu¡A¦ý¬O¦b¶i¦æ¹Bºâ®É¡A·|¯Ó±¼«Ü¦h CPU ¤Î°O¾ÐÅé¸ê·½¡A¦]¦¹°£«D¸ê®Æµ²ºc¥»¨­¡]¨Ò¦p Tree¡^©ÎÀ³¥Î°ÝÃD¥»¨­¡]¨Ò¦p Hanoi Tower¡^´N¾A¦X»¼°j¨ç¼Æªº¨Ï¥Î¡A§_«hÁÙ¬OºÉ¶q¤Ö¥Î¡C

JavaScript ªº¨ç¼Æ¥i±µ¨ü¡u¥iÅܭӼƪº¿é¤J¤Þ¼Æ¡v (Input Arguments of Variable Length)¡A³o¬O¦]¬°¿é¤J¤Þ¼Æ¥i¦s©ñ¦b¨ç¼Æª«¥ó¥»¨­ªº¤@­ÓÄæ¦ì¡]©Î©Ê½è¡^ arguments ¤§¤¤¡A¦¹Äæ¦ì©Ò¦s©ñªº¸ê®Æ¬O¤@­Ó°}¦C¡AJavaScript ¥i¥Î¨ä arguments.length ±oª¾¯u¥¿ªº¤Þ¼Æ­Ó¼Æ¡C¨Ò¦p¡A§Ú­Ì¥i¼g¤@­Ó¨ç¼Æ¡A¨Ó±N¿é¤J¤Þ¼Æ¥HµL§Ç¦Cªí©Î¦³§Ç¦Cªíªº¤è¦¡Åã¥Ü¡A¦¹¨ç¼Æªº­ì©l½X¦p¤U¡G

­ì©lÀÉ¡]list.js¡^¡G¡]¦Ç¦â°Ï°ì«ö¨â¤U§Y¥i«þ¨©¡^
// ¥iÅܤ޼ƭӼƪº¨ç¦¡½d¨Ò
function list(type) {
	document.write("<" + type + "l>");
	for (var i=1; i<list.arguments.length; i++)
		document.write("<li>" + list.arguments[i]);
	document.write("</" + type + "l>");
}

¦b¤W­z¨ç¼Æ¤¤¡Atype ¬O²Ä¤@­Ó¤Þ¼Æ¡]¥i¥H¬O "o" ©Î¬O "u"¡^¡A¦Ó«áÄòªº¨ä¥L¿é¤J¤Þ¼Æ¡A«h¬O¥H list.arguments ³o­Ó°}¦C¨Óªí¥Ü¡A¨ä¤¤ list ¬O¨ç¼Æªº¦WºÙ¡C¨Ò¦p¡Alist.arguments[0] ´N¬O type ¥»¨­¡Alist.arguments[1] ´N¬O¦b type ¤§«áªº²Ä¤@­Ó¤Þ¼Æ¡Alist.arguments[2] «h¬O²Ä¤G­Ó¡A¨Ì¦¹Ãþ±À¡C

¨Ï¥Î¤W­z¨ç¼Æ¥i²£¥Í¥ô·N­Ó¼ÆªºµL§Ç©M¦³§Ç¦Cªí¡A¦p¤U¡G

Example¡]list01.htm¡^¡G

¨ä­ì©l½X¬°¡G

­ì©lÀÉ¡]list01.htm¡^¡G¡]¦Ç¦â°Ï°ì«ö¨â¤U§Y¥i«þ¨©¡^
<html>
<head>
<meta HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=big5">
</head>

<body>
<h2 align=center>¥i±µ¨ü¤£¦P¿é¤J­Ó¼Æªº¨ç¼Æ</h2>
<hr>

<script src="list.js"></script>

¥H¡ulist("u", "­»¿¼", "¾ï¤l", "Ä«ªG")¡v²£¥ÍªºµL§Ç¦Cªí¡G
<script>
list("u", "­»¿¼", "¾ï¤l", "Ä«ªG");
</script>

¥H¡ulist("o", "«a­x", "¨È­x", "©u­x", "¹Ô©³")¡v²£¥Íªº¦³§Ç¦Cªí¡G
<script>
list("o", "«a­x", "¨È­x", "©u­x", "¹Ô©³");
</script>

<hr>
</body>
</html>


JavaScript µ{¦¡³]­p»PÀ³¥Î¡G¥Î©óºô­¶¥Î¤áºÝ