Chapter 13: Exercises

選擇題


簡答題

  1. 請使用一個實例,來說明如何在一個 ASP 的網頁中呼叫一個 JavaScript 的遞迴函數。
  2. 請使用一個實例,來說明如何在一個 ASP 的網頁中呼叫一個具有可變參數個數的 JavaScript 函數。
  3. 請說明兩種方法,可將常用的 JavaScript 函式寫在一個檔案內,以便被不同的 ASP 網頁呼叫。(請舉一個實例來說明。)

程式題

請使用本章所學到 Server-side JScript 有關函數的程式技巧來完成下列作業:
  1. (**) 計算Fibonacci數列的遞迴函數: 請寫一個網頁 FiboRecursive.asp,包含一個遞迴函數 fibo(n),可用來計算第 n 項的 Fibonacci 數列,此數列的定義如下: fibo(0)=0 fibo(1)=1 fibo(n)=fibo(n-1)+fibo(n-2),當 n 大於或等於 2 請呼叫此函數,並在網頁列出從 n = 0 到 n = 20 的 fibo(n) 值。
  2. (**) 計算Fibonacci數列的非遞迴函數: 請重複上題,寫一個網頁 FiboForLoop.asp,但改用迴圈方式(非遞迴)的函數來完成。
    (提示:你可以在函數內宣告一個陣列,以便儲存 fibo[0], fibo[1], fibo[2] 等等的值。)
  3. (***) 計算Fibonacci數列的遞迴函數,並計算在用戶端和伺服器端所花的計算時間: 請寫一個網頁 fiboSpeedTest.asp,裡面包含計算Fibonacci數列的遞迴函數(請見第一題),並分別呼叫此函數,在伺服器端和用戶端分別計時,最後在網頁列出從 n = 10 到 n = 20 時,在伺服器和用戶端計算此數列所花的時間,所列出的表格格式如下:
    n伺服器端的計算時間用戶端的計算時間
    10[伺服器計算fibo(10)所花的時間][用戶端計算fibo(10)所花的時間]
    11[伺服器計算fibo(11)所花的時間][用戶端計算fibo(11)所花的時間]
    .
    .
    .
    .
    .
    .
    .
    .
    .
    20[伺服器計算fibo(20)所花的時間][用戶端計算fibo(20)所花的時間]

    注意:你必須寫一個檔案 fibo.js,包含 fibo(n) 函數,並同時在伺服器和用戶端引用這一個檔案。
  4. (***) 計算時間比較:以「遞迴方式」和「迴圈方式」來產生Fibonacci數列: 本題包含前面兩題。
    1. 請寫一個函數定義檔 fibonacci.js,裡面包含兩個函數,分別是遞迴函數 fiboRecursive() 和非遞迴函數(使用迴圈) fiboForloop()。
    2. 請寫一個網頁 fiboSpeedTest.asp,使用 SSI (Server-Side Include) 的方式來引入上述檔案,並分別呼叫此函數,進行計時,最後在網頁列出從 n = 20 到 n = 30 時,計算 fiboRecursive(n) 和 fiboForloop(n) 所花的時間,所列出的表格格式如下:
      n遞迴方式迴圈方式
      20[計算fiboRecursive(20)所花的時間][計算fiboForloop(20)所花的時間]
      21[計算fiboRecursive(21)所花的時間][計算fiboForloop(21)所花的時間]
      .
      .
      .
      .
      .
      .
      .
      .
      .
      30[計算fiboRecursive(30)所花的時間][計算fiboForloop(30)所花的時間]
    3. 你將會發現,電腦在計算fiboForloop(n)所花的計算時間會比fiboRecursive(n)少了很多,你能解釋原因嗎?

JScript 程式設計與應用:用於伺服器端的 ASP 環境