2.1
寫乙個遞迴函式,來獲取第n個斐波那契數,前兩個斐波那契數0和1,第n個數總是等於它前兩個數的和一串行開始為 0、1、1、2、3、5。應該定義為區域性( local )尾遞迴函式。
package com.lxuex.test.scala
object scala_01 else
}local(7)
} def main(args: array[string]):unit =
}
2.2
實現issorted方法,檢測array[a]是否按照給定的比較函式排序:
package com.lxuex.test.scala
object test02 ))
} def issorted[a](as: array[a], ordered: (a,a)=>boolean):boolean =
loop(0)
}}
2.3
我們看另乙個柯里化10 ( currying)的例子,把帶有兩個引數的函式f轉換為只有乙個引數的部分應用函式f。這裡只有實現可編譯通過。
def curry[a,b,c](f: (a, b) => c): a => (b => c)
def curry[a, b, c](f: (a, b) => c): a => (b => c) = (a:a)=>((b:b) => f(a, b))
2.4
實現反柯里化( uncurry ),與柯里化正相反。注意,因為右箭頭=>是右結合的,a => (b=>c)可以寫為a=>b=>c。
def uncurry[a,b,c](f: a => b => c): (a, b) => c
def uncurry[a,b,c](f: a => b => c): (a, b) => c = (a:a,b:b)=>f(a)(b)
2.5
實現乙個高階函式,可以組合兩個函式為乙個函式。
def compose[a,b,c] (f: b => c, g: a => b):a=> c
def compose[a,b,c](f: b => c, g: a => b): a => c = (a: a)=>f(g(a))
Scala併發程式設計第二章練習題2
二 實現乙個名為periodically的方法,該方法接收乙個用於度量時間的引數duraction 單位為毫秒 和乙個執行計算操作的 塊b。每經過乙個由引數duraction設定的時間段,該方法都應該執行乙個執行 塊b的執行緒,該方法需要擁有下列簽名 def periodically duracti...
第二章 練習。
1.正因子問題。include include int main printf d count return 0 注意 if if 如果是 if n i 0 count if i n i count 會比正確結果多一。可以用以下程式檢驗,看中間結果。include include int main ...
第二章練習
2 2 多條簡單訊息 將一條訊息儲存到變數中,將其列印出來 再將變數的值修改為一條新訊息,並將其列印出來。message this is a string.print message this is a string.message this is another string.print mess...